home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 2 / LIGHT-ROM 2 (Amiga Library Services)(1995).iso / programs / pc / l_parser / dxf_r12.txt < prev    next >
Text File  |  1995-03-23  |  140KB  |  2,628 lines

  1.  
  2.      |=================================================|
  3.      |                                                 |
  4.      |      Drawing Interchange and File Formats       |
  5.      |                  Release 12                     |
  6.      |   Copyright (c) 1982-1990, 1992 Autodesk, Inc.  |
  7.      |              All Rights Reserved                | 
  8.      |                                                 |
  9.      |=================================================|
  10.  
  11.  
  12. AutoCAD can be used by itself as a complete drawing editor. In some 
  13. applications, however, other programs must examine drawings created 
  14. by AutoCAD or generate drawings to be viewed, modified, or plotted 
  15. with AutoCAD.
  16.  
  17. For example, if you've made an architectural drawing with AutoCAD, 
  18. using inserted parts to represent windows, doors, and so on, you can 
  19. process the drawing file and produce a bill of materials of all 
  20. items used in the drawing, or even make energy-use calculations 
  21. based on the area and the number and type of windows used. Another 
  22. possible application is to use AutoCAD to describe structures and 
  23. then send the descriptions to a more powerful computer for finite-
  24. element structural analysis. You can compute stresses and 
  25. displacements and send back information to display the deformed 
  26. structure as an AutoCAD drawing.
  27.  
  28. Since the AutoCAD drawing database (.dwg file) is written in a 
  29. compact format that changes significantly as new features are added 
  30. to AutoCAD, we do not document its format and do not recommend that 
  31. you attempt to write programs to read it directly. To assist in 
  32. interchanging drawings between AutoCAD and other programs, a Drawing 
  33. Interchange file format (DXF) has been defined. All implementations 
  34. of AutoCAD accept this format and are able to convert it to and from 
  35. their internal drawing file representation.
  36.  
  37. AutoCAD also supports the Initial Graphics Exchange Specification 
  38. (IGES) file format. The information comprising an AutoCAD drawing 
  39. can be written out in IGES format, and IGES files can be read and 
  40. converted to the AutoCAD internal format.
  41.  
  42.  
  43. ASCII Drawing Interchange (DXF) Files
  44. *************************************
  45.  
  46. This section describes the AutoCAD DXF (drawing interchange file) 
  47. format and the commands provided to read and write these files. DXF 
  48. files are standard ASCII text files. They can easily be translated 
  49. to the formats of other CAD systems or submitted to other programs 
  50. for specialized analysis. AutoCAD can also produce or read a binary 
  51. form of the full DXF file. This feature is described in detail later 
  52. in this chapter.
  53.  
  54.  
  55. DXFOUT Command - Writing a DXF File
  56. ===================================
  57. You can generate a drawing interchange file from an existing drawing 
  58. by means of the DXFOUT command:
  59.  
  60.    Command: dxfout     
  61.  
  62. When AutoCAD prompts you, respond with a filename or press 5 to 
  63. accept the default.
  64.  
  65. The default name for the output file is the same as that of the 
  66. current drawing, but with a file type of .dxf. If you specify an 
  67. explicit filename, you do not need to include a file type; .dxf is 
  68. assumed. If a file with the same name already exists, the existing 
  69. file is deleted. If you specify the file using a file dialogue box, 
  70. and a file with the same name already exists, AutoCAD tells you; 
  71. allowing you to OK or cancel the deletion. Next, DXFOUT asks what 
  72. precision you want for floating-point numbers and permits output of 
  73. a partial DXF file containing only selected objects.
  74.  
  75.    Enter decimal places of accuracy (0 to 16)/Entities/Binary <6>:
  76.  
  77. The Binary option is described later in this chapter.
  78.  
  79. If you respond with "entities" (or just "e"), DXFOUT asks you to 
  80. select the objects you want written to the DXF file. Only the 
  81. objects you select are included in the output file - symbol tables 
  82. (including Block Definitions) will not be included. Once you've 
  83. selected the desired objects, AutoCAD again prompts you for the 
  84. numeric precision:
  85.  
  86.    Enter decimal places of accuracy (0 to 16)/Binary <6>:
  87.  
  88.  
  89. DXFIN Command - Loading a DXF File
  90. ==================================
  91. A drawing interchange file can be converted into an AutoCAD drawing 
  92. by means of the DXFIN command:
  93.  
  94.    Command: dxfin  
  95.  
  96. When AutoCAD prompts you, respond with the name of the drawing 
  97. interchange file to be loaded.
  98.  
  99.  
  100. Full DXFIN 
  101. ----------
  102. To load a complete DXF file, you must use DXFIN in an empty drawing, 
  103. before any entities have been drawn and before any additional Block 
  104. definitions, layers, linetypes, text styles, dimension styles, named 
  105. views, named coordinate systems, or named viewport configurations 
  106. have been created.
  107.  
  108. NOTE: If the drawing you are using as a prototype is not empty, you 
  109. might find it helpful to open a new drawing using the No 
  110. Prototype... button of the Create New Drawing dialogue box, as 
  111. described in chapter 4 of the "AutoCAD Reference Manual." You should 
  112. also be aware that some third-party applications include an acad.lsp 
  113. or .mnl file that modifies your drawing upon startup.
  114.  
  115. If any errors are detected during the input, the new drawing is 
  116. discarded. Otherwise, an automatic ZOOM All is performed to set the 
  117. drawing extents.
  118.  
  119.  
  120. Partial DXFIN
  121. -------------
  122. If the current drawing is not empty, DXFIN loads only the ENTITIES 
  123. section of the DXF file, adding the entities found there to the 
  124. current drawing. In this case, DXFIN displays the message:
  125.  
  126.    Not a new drawing -- only ENTITIES section will be input.
  127.  
  128. If errors are detected during such partial DXF input, the drawing is 
  129. returned to the state it was in before the DXFIN command. Otherwise, 
  130. the newly added entities are drawn.
  131.  
  132.  
  133. Auditing DXF Files
  134. ------------------
  135. To ensure that corrupt data is not imported into your drawing, you 
  136. can instruct AutoCAD to perform an audit after importing DXF files 
  137. into your drawing with DXFIN. When you use DXFIN, the default action 
  138. is to perform no automatic auditing. To activate automatic auditing, 
  139. use the CONFIG command: 
  140.  
  141.    Command: config
  142.  
  143. Your current AutoCAD configuration appears. Press 5 to continue. 
  144. From the Configuration menu select this option: 
  145.  
  146.    7. Configure operating parameters
  147.  
  148. From the Operating parameter menu select this option: 
  149.  
  150.    9. Automatic Audit after IGESIN, DXFIN, or DXBIN
  151.  
  152. Answer Y to this question: 
  153.  
  154.    Do you want an automatic audit after IGESIN, DXFIN, or DXBIN?
  155.    <N>: y
  156.  
  157. Return to the graphics screen by pressing 5 three times.
  158.  
  159. NOTE: This kind of audit only displays the errors AutoCAD finds; it 
  160. does not correct them. To correct problems, use the AUDIT command on 
  161. the drawing while you are in AutoCAD, or manually edit the DXF file.
  162.  
  163.  
  164. DXF File Format
  165. ===============
  166. This section describes the format of a DXF file in detail. It 
  167. contains technical information that you need only if you write your 
  168. own programs to process DXF files or work with entity information 
  169. obtained by certain AutoLISP and ADS functions.
  170.  
  171. It would probably be helpful to produce a DXF file from a small 
  172. drawing, print it out, and refer to it occasionally while reading 
  173. the information presented next.
  174.  
  175.  
  176. General File Structure
  177. ----------------------
  178. A Drawing Interchange File is simply an ASCII text file with a file 
  179. type of .dxf and specially formatted text. The overall organization 
  180. of a DXF file is as follows:
  181.  
  182. 1. HEADER section - General information about the drawing is found 
  183.    in this section of the DXF file. Each parameter has a variable 
  184.    name and an associated value (see table 11-3 for a list of the 
  185.    header variables).
  186.  
  187. 2. TABLES section - This section contains definitions of named 
  188.    items.
  189.  
  190.    o Linetype table (LTYPE)
  191.    o Layer table (LAYER)
  192.    o Text Style table (STYLE)
  193.    o View table (VIEW)
  194.    o User Coordinate System table (UCS)
  195.    o Viewport configuration table (VPORT)
  196.    o Dimension Style table (DIMSTYLE)
  197.    o Application Identification table (APPID)
  198.  
  199. 3. BLOCKS section - This section contains Block Definition entities 
  200.    describing the entities that make up each Block in the drawing.
  201.  
  202. 4. ENTITIES section - This section contains the drawing entities, 
  203.    including any Block References.
  204.  
  205. 5. END OF FILE
  206.  
  207. If you use DXFOUT's Entities option, the resulting DXF file contains 
  208. only the ENTITIES section and the END OF FILE marker, and the 
  209. ENTITIES section reflects only the objects you select for output.
  210.  
  211. NOTE: If you select an INSERT entity, the corresponding Block 
  212. definition is not included in the output file.
  213.  
  214. A DXF file is composed of many groups, each of which occupies two 
  215. lines in the DXF file. The first line of a group is a group code, 
  216. which is a positive nonzero integer output in FORTRAN I3 - that is, 
  217. right-justified and blank filled in a three-character field (the 
  218. exception to this is the four-digit extended entity data group 
  219. codes, which are output in FORTRAN I4). The second line of the group 
  220. is the group value, in a format that depends on the type of group 
  221. specified by the group code. Although DXFOUT output has a fixed 
  222. format, the DXFIN format is free.
  223.  
  224. The specific assignment of group codes depends on the item being 
  225. described in the file. However, the type of the value this group 
  226. supplies is derived from the group code in the following way:
  227.  
  228. Table 11-1. Group code ranges
  229. +================================+
  230. | Group code  | Following value  |
  231. | range       |                  |
  232. |-------------|------------------|
  233. | 0 - 9       | String           |
  234. |-------------|------------------|
  235. | 10 - 59     | Floating-point   |
  236. |-------------|------------------|
  237. | 60 - 79     | Integer          |
  238. |-------------|------------------|
  239. | 140 - 147   | Floating-point   |
  240. |-------------|------------------|
  241. | 170 - 175   | Integer          |
  242. |-------------|------------------|
  243. | 210 - 239   | Floating-point   |
  244. |-------------|------------------|
  245. | 999         | Comment (string) |
  246. |-------------|------------------|
  247. | 1010 - 1059 | Floating-point   |
  248. |-------------|------------------|
  249. | 1060 - 1079 | Integer          |
  250. |-------------|------------------|
  251. | 1000 - 1009 | String           |
  252. +--------------------------------+
  253.  
  254. Thus a program can easily read the value following a group code 
  255. without knowing the particular use of this group in an item in the 
  256. file. The appearance of values in the DXF file is not affected by 
  257. the setting of the UNITS command: coordinates are always represented 
  258. as decimal (or possibly scientific notation if very large) numbers, 
  259. and angles are always represented in decimal degrees with zero 
  260. degrees to the east of origin.
  261.  
  262. Variables, table entries, and entities are described by a group that 
  263. introduces the item, giving its type and/or name, followed by 
  264. multiple groups that supply the values associated with the item. In 
  265. addition, special groups are used for file separators such as 
  266. markers for the beginning and end of sections, tables, and the file 
  267. itself.
  268.  
  269. Entities, table entries, and file separators are always introduced 
  270. with a 0 group code that is followed by a name describing the item.
  271.  
  272. NOTE: The maximum DXF file string length is 256 characters. If your 
  273. AutoCAD drawing contains strings that exceed this number, those 
  274. strings are truncated during DXFOUT. If your DXF file contains 
  275. strings that exceed this number, DXFIN will fail.
  276.  
  277.  
  278. Group Codes
  279. -----------
  280. Group codes are used both to indicate the type of the value of the 
  281. group, as explained earlier, and to indicate the general use of the 
  282. group. The specific function of the group code depends on the actual 
  283. variable, table item, or entity description. This section indicates 
  284. the general use of groups, noting as "(fixed)" any that always have 
  285. the same function.
  286.  
  287. Table 11-2. AutoCAD entity group codes (by number) 
  288. +===============================================================+
  289. | Group code | Value type                                       |
  290. |------------|--------------------------------------------------|
  291. | 0          | Identifies the start of an entity, table entry,  |
  292. |            | or file separator. The type of entity is given   |
  293. |            | by the text value that follows this group        |
  294. |------------|--------------------------------------------------|
  295. | 1          | The primary text value for an entity             |
  296. |------------|--------------------------------------------------|
  297. | 2          | A name: Attribute tag, Block name, and so on.    |
  298. |            | Also used to identify a DXF section or table name|
  299. |------------|--------------------------------------------------|
  300. | 3-4        | Other textual or name values                     |
  301. |------------|--------------------------------------------------|
  302. | 5          | Entity handle expressed as a hexadecimal string  |
  303. |            | (fixed)                                          |
  304. |------------|--------------------------------------------------|
  305. | 6          | Line type name (fixed)                           |
  306. |------------|--------------------------------------------------|
  307. | 7          | Text style name (fixed)                          |
  308. |------------|--------------------------------------------------|
  309. | 8          | Layer name (fixed)                               |
  310. |------------|--------------------------------------------------|
  311. | 9          | Variable name identifier (used only in HEADER    |
  312. |            | section of the DXF file)                         |
  313. |------------|--------------------------------------------------|
  314. | 10         | Primary X coordinate (start point of a Line or   |
  315. |            | Text entity, center of a Circle, etc.)           |
  316. |------------|--------------------------------------------------|
  317. | 11-18      | Other X coordinates                              |
  318. |------------|--------------------------------------------------|
  319. | 20         | Primary Y coordinate. 2n values always           |
  320. |            | correspond to 1n values and immediately follow   |
  321. |            | them in the file                                 |
  322. |------------|--------------------------------------------------|
  323. | 21-28      | Other Y coordinates                              |
  324. |------------|--------------------------------------------------|
  325. | 30         | Primary Z coordinate. 3n values always           |
  326. |            | correspond to 1n and 2n values and immediately   |
  327. |            | follow them in the file                          |
  328. |------------|--------------------------------------------------|
  329. | 31-37      | Other Z coordinates                              |
  330. |------------|--------------------------------------------------|
  331. | 38         | This entity's elevation if nonzero (fixed).      |
  332. |            | Exists only in output from versions prior to R11 |
  333. |------------|--------------------------------------------------|
  334. | 39         | This entity's thickness if nonzero (fixed)       |
  335. |------------|--------------------------------------------------|
  336. | 40-48      | Floating-point values (text height, scale        |
  337. |            | factors, etc.)                                   |
  338. |------------|--------------------------------------------------|
  339. | 49         | Repeated value - multiple 49 groups may appear   |
  340. |            | in one entity for variable length tables (such   |
  341. |            | as the dash lengths in the LTYPE table). A 7x    |
  342. |            | group always appears before the first 49 group   |
  343. |            | to specify the table length                      |
  344. |------------|--------------------------------------------------|
  345. | 50-58      | Angles                                           |
  346. |------------|--------------------------------------------------|
  347. | 62         | Color number (fixed)                             |
  348. |------------|--------------------------------------------------|
  349. | 66         | "Entities follow" flag (fixed)                   |
  350. |------------|--------------------------------------------------|
  351. | 67         | Identifies whether entity is in model space or   |
  352. |            | paper space                                      |
  353. |------------|--------------------------------------------------|
  354. | 68         | Identifies whether viewport is on but fully off  |
  355. |            | screen, is not active, or is off                 |
  356. |------------|--------------------------------------------------|
  357. | 69         | Viewport identification number                   |
  358. |------------|--------------------------------------------------|
  359. | 70-78      | Integer values such as repeat counts, flag       |
  360. |            | bits, or modes                                   |
  361. |------------|--------------------------------------------------|
  362. | 210,       | X, Y, and Z components of extrusion direction    |
  363. | 220,       | (fixed)                                          |
  364. | 230        |                                                  |
  365. |------------|--------------------------------------------------|
  366. | 999        | Comments                                         |
  367. |------------|--------------------------------------------------|
  368. | 1000       | An ASCII string (up to 255 bytes long) in        |
  369. |            | extended entity data                             |
  370. |------------|--------------------------------------------------|
  371. | 1001       | Registered application name (ASCII string up to  |
  372. |            | 31 bytes long) for XDATA (fixed)                 |
  373. |------------|--------------------------------------------------|
  374. | 1002       | Extended entity data control string ("{" or "}") |
  375. |            | (fixed)                                          |
  376. |------------|--------------------------------------------------|
  377. | 1003       | Extended entity data Layer name                  |
  378. |------------|--------------------------------------------------|
  379. | 1004       | Chunk of bytes (up to 127 bytes long) in         |
  380. |            | extended entity data                             |
  381. |------------|--------------------------------------------------|
  382. | 1005       | Extended entity data database handle             |
  383. |------------|--------------------------------------------------|
  384. | 1010,      | Extended entity data X, Y, and Z coordinates     |
  385. | 1020,      |                                                  |
  386. | 1030       |                                                  |
  387. |------------|--------------------------------------------------|
  388. | 1011,      | Extended entity data X, Y, and Z coordinates of  |
  389. | 1021,      | 3D world space position                          |
  390. | 1031       |                                                  |
  391. |------------|--------------------------------------------------|
  392. | 1012,      | Extended entity data X, Y, and Z components of   |
  393. | 1022,      | 3D world space displacement                      |
  394. | 1032       |                                                  |
  395. |------------|--------------------------------------------------|
  396. | 1013,      | Extended entity data X, Y, and Z components of   |
  397. | 1023,      | 3D world space direction                         |
  398. | 1033       |                                                  |
  399. |------------|--------------------------------------------------|
  400. | 1040       | Extended entity data Floating-point value        |
  401. |------------|--------------------------------------------------|
  402. | 1041       | Extended entity data distance value              |
  403. |------------|--------------------------------------------------|
  404. | 1042       | Extended entity data scale factor                |
  405. |------------|--------------------------------------------------|
  406. | 1070       | Extended entity data 16-bit signed integer       |
  407. |------------|--------------------------------------------------|
  408. | 1071       | Extended entity data 32-bit signed long          |
  409. +---------------------------------------------------------------+
  410.  
  411.  
  412. Comments 
  413. ========
  414. The 999 group code indicates that the following line is a comment 
  415. string. DXFOUT does not currently include such groups in a DXF 
  416. output file, but DXFIN honors them and ignores the comments. Thus, 
  417. you can use the 999 group to include comments in a DXF file you've 
  418. edited. For example:
  419.  
  420.    999
  421.    This is a comment.
  422.    999
  423.    This is another comment.
  424.  
  425.  
  426. File Sections
  427. =============
  428. The DXF file is subdivided into four editable sections, plus the END 
  429. OF FILE marker. File separator groups are used to delimit these file 
  430. sections. The following is an example of a void DXF file with only 
  431. the section markers and table headers present:
  432.  
  433.    0            (Begin HEADER section)
  434.   SECTION
  435.    2
  436.   HEADER
  437.                <<<<Header variable items go here>>>>
  438.   0
  439.   ENDSEC       (End HEADER section)
  440.    0           (Begin TABLES section)
  441.   SECTION
  442.    2
  443.   TABLES
  444.    0
  445.   TABLE
  446.    2
  447.   VPORT
  448.    70
  449.   (viewport table maximum item count)
  450.                <<<<viewport table items go here>>>>
  451.   0
  452.   ENDTAB
  453.   0
  454.   TABLE
  455.   2
  456.   APPID, DIMSTYLE, LTYPE, LAYER, STYLE, UCS, VIEW, or VPORT
  457.   70
  458.   (Table maximum item count)
  459.                <<<<Table items go here>>>>
  460.   0
  461.   ENDTAB
  462.   0
  463.   ENDSEC       (End TABLES section)
  464.   0            (Begin BLOCKS section)
  465.   SECTION
  466.   2
  467.   BLOCKS
  468.                <<<<Block definition entities go here>>>>
  469.   0
  470.   ENDSEC       (End BLOCKS section)
  471.   0            (Begin ENTITIES section)
  472.   SECTION
  473.   2
  474.   ENTITIES
  475.                <<<<Drawing entities go here>>>>
  476.   0
  477.   ENDSEC       (End ENTITIES section)
  478.   0
  479.   EOF          (End of file)
  480.  
  481.  
  482. HEADER Section
  483. --------------
  484. The HEADER section of the DXF file contains settings of variables 
  485. associated with the drawing. These variables are set with various 
  486. commands and are the type of information displayed by the STATUS 
  487. command. Each variable is specified in the header section by a 9 
  488. group giving the variable's name, followed by groups that supply the 
  489. variable's value. The following list shows the header variables and 
  490. their meanings.
  491.  
  492. Although this list is very similar to the list of system variables 
  493. in Appendix A of this manual, the two lists are not identical. Be 
  494. sure you're referring to the proper list.
  495.  
  496. NOTE: $AXISMODE and $AXISUNIT are no longer functional in Release 
  497. 12.
  498.  
  499. Table 11-3. DXF system variables
  500. +===============================================================+
  501. | Variable       | Type   | Description                         |
  502. |----------------|--------|-------------------------------------|
  503. | $ACADVER       | 1      | The AutoCAD drawing database        |
  504. |                |        | version number; AC1006 = R10,       |
  505. |                |        | AC1009 = R11 and R12                |
  506. |----------------|--------|-------------------------------------|
  507. | $ANGBASE       | 50     | Angle 0 direction                   |
  508. |----------------|--------|-------------------------------------|
  509. | $ANGDIR        | 70     | 1 = clockwise angles, 0 =           |
  510. |                |        | counterclockwise                    |
  511. |----------------|--------|-------------------------------------|
  512. | $ATTDIA        | 70     | Attribute entry dialogs, 1 = on,    |
  513. |                |        | 0 = off                             |
  514. |----------------|--------|-------------------------------------|
  515. | $ATTMODE       | 70     | Attribute visibility: 0 = none,     |
  516. |                |        | 1 = normal, 2 = all                 |
  517. |----------------|--------|-------------------------------------|
  518. | $ATTREQ        | 70     | Attribute prompting during INSERT,  |
  519. |                |        | 1 = on, 0 = off                     |
  520. |----------------|--------|-------------------------------------|
  521. | $AUNITS        | 70     | Units format for angles             |
  522. |----------------|--------|-------------------------------------|
  523. | $AUPREC        | 70     | Units precision for angles          |
  524. |----------------|--------|-------------------------------------|
  525. | $AXISMODE      | 70     | Axis on if nonzero (not functional  |
  526. |                |        | in Release 12)                      |
  527. |----------------|--------|-------------------------------------|
  528. | $AXISUNIT      | 10, 20 | Axis X and Y tick spacing           |
  529. |                |        | (not functional in Release 12)      |
  530. |----------------|--------|-------------------------------------|
  531. | $BLIPMODE      | 70     | Blip mode on if nonzero             |
  532. |----------------|--------|-------------------------------------|
  533. | $CECOLOR       | 62     | Entity color number; 0 = BYBLOCK,   |
  534. |                |        | 256 = BYLAYER                       |
  535. |----------------|--------|-------------------------------------|
  536. | $CELTYPE       | 6      | Entity linetype name, or BYBLOCK    |
  537. |                |        | or BYLAYER                          |
  538. |----------------|--------|-------------------------------------|
  539. | $CHAMFERA      | 40     | First chamfer distance              |
  540. |----------------|--------|-------------------------------------|
  541. | $CHAMFERB      | 40     | Second chamfer distance             |
  542. |----------------|--------|-------------------------------------|
  543. | $CLAYER        | 8      | Current layer name                  |
  544. |----------------|--------|-------------------------------------|
  545. | $COORDS        | 70     | 0 = static coordinate display,      |
  546. |                |        | 1 = continuous update, 2 = "d<a"    |
  547. |                |        | format                              |
  548. |----------------|--------|-------------------------------------|
  549. | $DIMALT        | 70     | Alternate unit dimensioning         |
  550. |                |        | performed if nonzero                |
  551. |----------------|--------|-------------------------------------|
  552. | $DIMALTD       | 70     | Alternate unit decimal places       |
  553. |----------------|--------|-------------------------------------|
  554. | $DIMALTF       | 40     | Alternate unit scale factor         |
  555. |----------------|--------|-------------------------------------|
  556. | $DIMAPOST      | 1      | Alternate dimensioning suffix       |
  557. |----------------|--------|-------------------------------------|
  558. | $DIMASO        | 70     | 1 = create associative dimensioning,|
  559. |                |        | 0 = draw individual entities        |
  560. |----------------|--------|-------------------------------------|
  561. | $DIMASZ        | 40     | Dimensioning arrow size             |
  562. |----------------|--------|-------------------------------------|
  563. | $DIMBLK        | 2      | Arrow block name                    |
  564. |----------------|--------|-------------------------------------|
  565. | $DIMBLK1       | 1      | First arrow block name              |
  566. |----------------|--------|-------------------------------------|
  567. | $DIMBLK2       | 1      | Second arrow block name             |
  568. |----------------|--------|-------------------------------------|
  569. | $DIMCEN        | 40     | Size of center mark/lines           |
  570. |----------------|--------|-------------------------------------|
  571. | $DIMCLRD       | 70     | Dimension line color, range is      |
  572. |                |        | 0 = BYBLOCK, 256 = BYLAYER          |
  573. |----------------|--------|-------------------------------------|
  574. | $DIMCLRE       | 70     | Dimension extension line color,     |
  575. |                |        | range is 0 = BYBLOCK, 256 = BYLAYER |
  576. |----------------|--------|-------------------------------------|
  577. | $DIMCLRT       | 70     | Dimension text color, range is      |
  578. |                |        | 0 = BYBLOCK, 256 = BYLAYER          |
  579. |----------------|--------|-------------------------------------|
  580. | $DIMDLE        | 40     | Dimension line extension            |
  581. |----------------|--------|-------------------------------------|
  582. | $DIMDLI        | 40     | Dimension line increment            |
  583. |----------------|--------|-------------------------------------|
  584. | $DIMEXE        | 40     | Extension line extension            |
  585. |----------------|--------|-------------------------------------|
  586. | $DIMEXO        | 40     | Extension line offset               |
  587. |----------------|--------|-------------------------------------|
  588. | $DIMGAP        | 40     | Dimension line gap                  |
  589. |----------------|--------|-------------------------------------|
  590. | $DIMLFAC       | 40     | Linear measurements scale factor    |
  591. |----------------|--------|-------------------------------------|
  592. | $DIMLIM        | 70     | Dimension limits generated if       |
  593. |                |        | nonzero                             |
  594. |----------------|--------|-------------------------------------|
  595. | $DIMPOST       | 1      | General dimensioning suffix         |
  596. |----------------|--------|-------------------------------------|
  597. | $DIMRND        | 40     | Rounding value for dimension        |
  598. |                |        | distances                           |
  599. |----------------|--------|-------------------------------------|
  600. | $DIMSAH        | 70     | Use separate arrow blocks if nonzero|
  601. |----------------|--------|-------------------------------------|
  602. | $DIMSCALE      | 40     | Overall dimensioning scale factor   |
  603. |----------------|--------|-------------------------------------|
  604. | $DIMSE1        | 70     | First extension line suppressed     |
  605. |                |        | if nonzero                          |
  606. |----------------|--------|-------------------------------------|
  607. | $DIMSE2        | 70     | Second extension line suppressed    |
  608. |                |        | if nonzero                          |
  609. |----------------|--------|-------------------------------------|
  610. | $DIMSHO        | 70     | 1 = Recompute dimensions while      |
  611. |                |        | dragging, 0 = drag original image   |
  612. |----------------|--------|-------------------------------------|
  613. | $DIMSOXD       | 70     | Suppress outside-extensions         |
  614. |                |        | dimension lines if nonzero          |
  615. |----------------|--------|-------------------------------------|
  616. | $DIMSTYLE      | 2      | Dimension style name                |
  617. |----------------|--------|-------------------------------------|
  618. | $DIMTAD        | 70     | Text above dimension line if nonzero|
  619. |----------------|--------|-------------------------------------|
  620. | $DIMTFAC       | 40     | Dimension tolerance display scale   |
  621. |                |        | factor                              |
  622. |----------------|--------|-------------------------------------|
  623. | $DIMTIH        | 70     | Text inside horizontal if nonzero   |
  624. |----------------|--------|-------------------------------------|
  625. | $DIMTIX        | 70     | Force text inside extensions if     |
  626. |                |        | nonzero                             |
  627. |----------------|--------|-------------------------------------|
  628. | $DIMTM         | 40     | Minus tolerance                     |
  629. |----------------|--------|-------------------------------------|
  630. | $DIMTOFL       | 70     | If text outside extensions, force   |
  631. |                |        | line extensions between extensions  |
  632. |                |        | if nonzero                          |
  633. |----------------|--------|-------------------------------------|
  634. | $DIMTOH        | 70     | Text outside horizontal if nonzero  |
  635. |----------------|--------|-------------------------------------|
  636. | $DIMTOL        | 70     | Dimension tolerances generated if   |
  637. |                |        | nonzero                             |
  638. |----------------|--------|-------------------------------------|
  639. | $DIMTP         | 40     | Plus tolerance                      |
  640. |----------------|--------|-------------------------------------|
  641. | $DIMTSZ        | 40     | Dimensioning tick size: 0 = no ticks|
  642. |----------------|--------|-------------------------------------|
  643. | $DIMTVP        | 40     | Text vertical position              |
  644. |----------------|--------|-------------------------------------|
  645. | $DIMTXT        | 40     | Dimensioning text height            |
  646. |----------------|--------|-------------------------------------|
  647. | $DIMZIN        | 70     | Zero suppression for "feet & inch"  |
  648. |                |        | dimensions                          |
  649. |----------------|--------|-------------------------------------|
  650. | $DWGCODEPAGE   | 70     | Drawing code page. Set to the       |
  651. |                |        | system code page when a new drawing |
  652. |                |        | is created, but not otherwise       |
  653. |                |        | maintained by AutoCAD               |
  654. |----------------|--------|-------------------------------------|
  655. | $DRAGMODE      | 70     | 0 = off, 1 = on, 2 = auto           |
  656. |----------------|--------|-------------------------------------|
  657. | $ELEVATION     | 40     | Current elevation set by ELEV       |
  658. |                |        | command                             |
  659. |----------------|--------|-------------------------------------|
  660. | $EXTMAX        | 10, 20,| X, Y, and Z drawing extents         |
  661. |                | 30     | upper-right corner (in WCS)         |
  662. |----------------|--------|-------------------------------------|
  663. | $EXTMIN        | 10, 20,| X, Y, and Z drawing extents         |
  664. |                | 30     | lower-left corner (in WCS)          |
  665. |----------------|--------|-------------------------------------|
  666. | $FILLETRAD     | 40     | Fillet radius                       |
  667. |----------------|--------|-------------------------------------|
  668. | $FILLMODE      | 70     | Fill mode on if nonzero             |
  669. |----------------|--------|-------------------------------------|
  670. | $HANDLING      | 70     | Handles enabled if nonzero          |
  671. |----------------|--------|-------------------------------------|
  672. | $HANDSEED      | 5      | Next available handle               |
  673. |----------------|--------|-------------------------------------|
  674. | $INSBASE       | 10, 20,| Insertion base set by BASE command  |
  675. |                | 30     | (in WCS)                            |
  676. |----------------|--------|-------------------------------------|
  677. | $LIMCHECK      | 70     | Nonzero if limits checking is on    |
  678. |----------------|--------|-------------------------------------|
  679. | $LIMMAX        | 10, 20 | XY drawing limits upper-right       |
  680. |                |        | corner (in WCS)                     |
  681. |----------------|--------|-------------------------------------|
  682. | $LIMMIN        | 10, 20 | XY drawing limits lower-left        |
  683. |                |        | corner (in WCS)                     |
  684. |----------------|--------|-------------------------------------|
  685. | $LTSCALE       | 40     | Global linetype scale               |
  686. |----------------|--------|-------------------------------------|
  687. | $LUNITS        | 70     | Units format for coordinates and    |
  688. |                |        | distances                           |
  689. |----------------|--------|-------------------------------------|
  690. | $LUPREC        | 70     | Units precision for coordinates     |
  691. |                |        | and distances                       |
  692. |----------------|--------|-------------------------------------|
  693. | $MAXACTVP      | 70     | Sets maximum number of viewports to |
  694. |                |        | be regenerated                      |
  695. |----------------|--------|-------------------------------------|
  696. | $MENU          | 1      | Name of menu file                   |
  697. |----------------|--------|-------------------------------------|
  698. | $MIRRTEXT      | 70     | Mirror text if nonzero              |
  699. |----------------|--------|-------------------------------------|
  700. | $ORTHOMODE     | 70     | Ortho mode on if nonzero            |
  701. |----------------|--------|-------------------------------------|
  702. | $OSMODE        | 70     | Running object snap modes           |
  703. |----------------|--------|-------------------------------------|
  704. | $PDMODE        | 70     | Point display mode                  |
  705. |----------------|--------|-------------------------------------|
  706. | $PDSIZE        | 40     | Point display size                  |
  707. |----------------|--------|-------------------------------------|
  708. | $PELEVATION    | 40     | Current paper space elevation       |
  709. |----------------|--------|-------------------------------------|
  710. | $PEXTMAX       | 10, 20,| Maximum X, Y, and Z extents for     |
  711. |                | 30     | paper space                         |
  712. |----------------|--------|-------------------------------------|
  713. | $PEXTMIN       | 10, 20,| Minimum X, Y, and Z extents for     |
  714. |                | 30     | paper space                         |
  715. |----------------|--------|-------------------------------------|
  716. | $PLIMCHECK     | 70     | Limits checking in paper space      |
  717. |                |        | when nonzero                        |
  718. |----------------|--------|-------------------------------------|
  719. | $PLIMMAX       | 10, 20 | Maximum X and Y limits in paper     |
  720. |                |        | space                               |
  721. |----------------|--------|-------------------------------------|
  722. | $PLIMMIN       | 10, 20 | Minimum X and Y limits in paper     |
  723. |                |        | space                               |
  724. |----------------|--------|-------------------------------------|
  725. | $PLINEGEN      | 70     | Governs the generation of linetype  |
  726. |                |        | patterns around the vertices        |
  727. |                |        | of a 2D Polyline                    |
  728. |                |        | 1 = linetype is generated in        |
  729. |                |        | a continuous pattern around         |
  730. |                |        | vertices of the Polyline            |
  731. |                |        | 0 = each segment of the Polyline    |
  732. |                |        | starts and ends with a dash         |
  733. |----------------|--------|-------------------------------------|
  734. | $PLINEWID      | 40     | Default Polyline width              |
  735. |----------------|--------|-------------------------------------|
  736. | $PSLTSCALE     | 70     | Controls paper space linetype       |
  737. |                |        | scaling                             |
  738. |                |        | 1 = no special linetype scaling     |
  739. |                |        | 0 = viewport scaling governs        |
  740. |                |        | linetype scaling                    |
  741. |----------------|--------|-------------------------------------|
  742. | $PUCSNAME      | 2      | Current paper space UCS name        |
  743. |----------------|--------|-------------------------------------|
  744. | $PUCSORG       | 10, 20,| Current paper space UCS origin      |
  745. |                | 30     |                                     |
  746. |----------------|--------|-------------------------------------|
  747. | $PUCSXDIR      | 10, 20,| Current paper space UCS X axis      |
  748. |                | 30     |                                     |
  749. |----------------|--------|-------------------------------------|
  750. | $PUCSYDIR      | 10, 20,| Current paper space UCS Y axis      |
  751. |                | 30     |                                     |
  752. |----------------|--------|-------------------------------------|
  753. | $QTEXTMODE     | 70     | Quick text mode on if nonzero       |
  754. |----------------|--------|-------------------------------------|
  755. | $REGENMODE     | 70     | REGENAUTO mode on if nonzero        |
  756. |----------------|--------|-------------------------------------|
  757. | $SHADEDGE      | 70     | 0 = faces shaded, edges not         |
  758. |                |        | highlighted                         |
  759. |                |        | 1 = faces shaded, edges highlighted |
  760. |                |        | in black                            |
  761. |                |        | 2 = faces not filled, edges in      |
  762. |                |        | entity color                        |
  763. |                |        | 3 = faces in entity color,          |
  764. |                |        | edges in black                      |
  765. |----------------|--------|-------------------------------------|
  766. | $SHADEDIF      | 70     | Percent ambient/diffuse light,      |
  767. |                |        | range 1-100, default 70             |
  768. |----------------|--------|-------------------------------------|
  769. | $SKETCHINC     | 40     | Sketch record increment             |
  770. | $SKPOLY        | 70     | 0 = sketch lines, 1 = sketch        |
  771. |                |        | polylines                           |
  772. |----------------|--------|-------------------------------------|
  773. | $SPLFRAME      | 70     | Spline control polygon display,     |
  774. |                |        | 1 = on, 0 = off                     |
  775. |----------------|--------|-------------------------------------|
  776. | $SPLINESEGS    | 70     | Number of line segments per spline  |
  777. |                |        | patch                               |
  778. |----------------|--------|-------------------------------------|
  779. | $SPLINETYPE    | 70     | Spline curve type for PEDIT Spline  |
  780. |                |        | (See your AutoCAD Reference Manual) |
  781. |----------------|--------|-------------------------------------|
  782. | $SURFTAB1      | 70     | Number of mesh tabulations in first |
  783. |                |        | direction                           |
  784. |----------------|--------|-------------------------------------|
  785. | $SURFTAB2      | 70     | Number of mesh tabulations in       |
  786. |                |        | second direction                    |
  787. |----------------|--------|-------------------------------------|
  788. | $SURFTYPE      | 70     | Surface type for PEDIT Smooth       |
  789. |                |        | (See your AutoCAD Reference Manual) |
  790. |----------------|--------|-------------------------------------|
  791. | $SURFU         | 70     | Surface density (for PEDIT Smooth)  |
  792. |                |        | in M direction                      |
  793. |----------------|--------|-------------------------------------|
  794. | $SURFV         | 70     | Surface density (for PEDIT Smooth)  |
  795. |                |        | in N direction                      |
  796. |----------------|--------|-------------------------------------|
  797. | $TDCREATE      | 40     | Date/time of drawing creation       |
  798. |----------------|--------|-------------------------------------|
  799. | $TDINDWG       | 40     | Cumulative editing time for         |
  800. |                |        | this drawing                        |
  801. |----------------|--------|-------------------------------------|
  802. | $TDUPDATE      | 40     | Date/time of last drawing update    |
  803. |----------------|--------|-------------------------------------|
  804. | $TDUSRTIMER    | 40     | User elapsed timer                  |
  805. |----------------|--------|-------------------------------------|
  806. | $TEXTSIZE      | 40     | Default text height                 |
  807. |----------------|--------|-------------------------------------|
  808. | $TEXTSTYLE     | 7      | Current text style name             |
  809. |----------------|--------|-------------------------------------|
  810. | $THICKNESS     | 40     | Current thickness set by ELEV       |
  811. |                |        | command                             |
  812. |----------------|--------|-------------------------------------|
  813. | $TILEMODE      | 70     | 1 for previous release              |
  814. |                |        | compatibility mode, 0 otherwise     |
  815. |----------------|--------|-------------------------------------|
  816. | $TRACEWID      | 40     | Default Trace width                 |
  817. |----------------|--------|-------------------------------------|
  818. | $UCSNAME       | 2      | Name of current UCS                 |
  819. |----------------|--------|-------------------------------------|
  820. | $UCSORG        | 10, 20,| Origin of current UCS (in WCS)      |
  821. |                | 30     |                                     |
  822. |----------------|--------|-------------------------------------|
  823. | $UCSXDIR       | 10, 20,| Direction of current UCS's X axis   |
  824. |                | 30     | (in World coordinates)              |
  825. |----------------|--------|-------------------------------------|
  826. | $UCSYDIR       | 10, 20,| Direction of current UCS's Y axis   |
  827. |                | 30     | (in World coordinates)              |
  828. |----------------|--------|-------------------------------------|
  829. | $UNITMODE      | 70     | Low bit set = display fractions,    |
  830. |                |        | feet-and-inches, and surveyor's     |
  831. |                |        | angles in input format              |
  832. |----------------|--------|-------------------------------------|
  833. | $USERI1 - 5    | 70     | Five integer variables intended     |
  834. |                |        | for use by third-party developers   |
  835. |----------------|--------|-------------------------------------|
  836. | $USERR1 - 5    | 40     | Five real variables intended        |
  837. |                |        | for use by third-party developers   |
  838. |----------------|--------|-------------------------------------|
  839. | $USRTIMER      | 70     | 0 = timer off, 1 = timer on         |
  840. |----------------|--------|-------------------------------------|
  841. | $VISRETAIN     | 70     | 0 = don't retain Xref-dependent     |
  842. |                |        | visibility settings, 1 = retain     |
  843. |                |        | Xref-dependent visibility settings  |
  844. |----------------|--------|-------------------------------------|
  845. | $WORLDVIEW     | 70     | 1 = set UCS to WCS during           |
  846. |                |        | DVIEW/VPOINT, 0 = don't change UCS  |
  847. +---------------------------------------------------------------+
  848.  
  849. The following header variables existed prior to AutoCAD Release 11 
  850. but now have independent settings for each active viewport. DXFIN 
  851. honors these variables when read from DXF files, but if a VPORT 
  852. symbol table with *ACTIVE entries is present (as is true for any DXF 
  853. file produced by Release 11 or higher), the values in the VPORT 
  854. table entries override the values of these header variables.
  855.  
  856. Table 11-4. Revised VPORT header variables
  857. +===============================================================+
  858. | Variable       | Type   | Description                         |
  859. |----------------|--------|-------------------------------------|
  860. | $FASTZOOM      | 70     | Fast zoom enabled if nonzero        |
  861. |----------------|--------|-------------------------------------|
  862. | $GRIDMODE      | 70     | Grid mode on if nonzero             |
  863. |----------------|--------|-------------------------------------|
  864. | $GRIDUNIT      | 10, 20 | Grid X and Y spacing                |
  865. |----------------|--------|-------------------------------------|
  866. | $SNAPANG       | 50     | Snap grid rotation angle            |
  867. |----------------|--------|-------------------------------------|
  868. | $SNAPBASE      | 10, 20 | Snap/grid base point (in UCS)       |
  869. |----------------|--------|-------------------------------------|
  870. | $SNAPISOPAIR   | 70     | Isometric plane: 0 = left, 1 = top, |
  871. |                |        | 2 = right                           |
  872. |----------------|--------|-------------------------------------|
  873. | $SNAPMODE      | 70     | Snap mode on if nonzero             |
  874. |----------------|--------|-------------------------------------|
  875. | $SNAPSTYLE     | 70     | Snap style: 0 = standard,           |
  876. |                |        | 1 = isometric                       |
  877. |----------------|--------|-------------------------------------|
  878. | $SNAPUNIT      | 10, 20 |Snap grid X and Y spacing            |
  879. |----------------|--------|-------------------------------------|
  880. | $VIEWCTR       | 10, 20 |XY center of current view on screen  |
  881. |----------------|--------|-------------------------------------|
  882. | $VIEWDIR       | 10, 20,| Viewing direction (direction from   |
  883. |                | 30     | target, in WCS)                     |
  884. |----------------|--------|-------------------------------------|
  885. | $VIEWSIZE      | 40     | Height of view                      |
  886. +----------------|--------|-------------------------------------+
  887.  
  888. The date/time variables ($TDCREATE and $TDUPDATE) are output as real 
  889. numbers in the following format:
  890.  
  891.    <Julian date>.<Fraction>
  892.  
  893. The elapsed time variables ($TDINDWG and $TDUSRTIMER) have a similar 
  894. format:
  895.  
  896.    <Number of days>.<Fraction>
  897.  
  898. The date and time variables are described on page 299.
  899.  
  900.  
  901. TABLES Section
  902. --------------
  903. The TABLES section contains several tables, each of which contains a 
  904. variable number of table entries.
  905.  
  906. The order of the tables may change, but the LTYPE table will always 
  907. precede the LAYER table. Each table is introduced with a 0 group 
  908. with the label TABLE. This is followed by a 2 group identifying the 
  909. particular table (VPORT, LTYPE, LAYER, STYLE, VIEW, DIMSTYLE, UCS or 
  910. APPID) and a 70 group that specifies the maximum number of table 
  911. entries that may follow. Table names are always output in uppercase 
  912. characters.
  913.  
  914. The tables in a drawing can contain deleted items, but these are not 
  915. written to the DXF file. Thus, fewer table entries may follow the 
  916. table header than are indicated by the 70 group, so don't use the 
  917. count in the 70 group as an index to read in the table. This group 
  918. is provided so that a program which reads DXF files can allocate an 
  919. array large enough to hold all the table entries that follow.
  920.  
  921. Following this header for each table are the table entries. Each 
  922. table item consists of a 0 group identifying the item type (same as 
  923. table name, e.g., LTYPE or LAYER), a 2 group giving the name of the 
  924. table entry, a 70 group specifying flags relevant to the table entry 
  925. (defined for each following table), and additional groups that give 
  926. the value of the table entry. The end of each table is indicated by 
  927. a 0 group with the value ENDTAB.
  928.  
  929. The 70 group flag bit values that apply to all table entries are 
  930. described in the following chart. Additional 70 group values that 
  931. apply to LAYER, STYLE, and VIEW table entries are described in the 
  932. appropriate sections below.
  933.  
  934. Table 11-5. Group 70 bit codes that apply to all table entries
  935. +===============================================================+
  936. | Flag bit | Meaning                                            |
  937. | value    |                                                    |
  938. |----------|----------------------------------------------------|
  939. | 16       | If set, table entry is externally dependent on     |
  940. |          | an Xref                                            |
  941. |----------|----------------------------------------------------|
  942. | 32       | If this bit and bit 16 are both set, the           |
  943. |          | externally dependent Xref has been successfully    |
  944. |          | resolved                                           |
  945. |----------|----------------------------------------------------|
  946. | 64       | If set, the table entry was referenced by at least |
  947. |          | one entity in the drawing the last time the drawing|
  948. |          | was edited. (This flag is for the benefit of       |
  949. |          | AutoCAD commands; it can be ignored by most        |
  950. |          | programs that read DXF files, and need not be set  |
  951. |          | by programs that write DXF files)                  |
  952. +---------------------------------------------------------------+
  953.  
  954. The following are the groups used for each type of table item. All 
  955. groups are present for each table item.
  956.  
  957. APPID     2 (user-supplied application name), 70 (standard flag
  958.           values).
  959.           These table entries maintain a set of names for all 
  960.           applications registered with a drawing.
  961.  
  962. DIMSTYLE  2 (dimension style name), 70 (standard flag values), and 
  963.           the following, described by dimension variable name: 
  964.           3 (dimpost), 4 (dimapost), 5 (dimblk), 6 (dimblk1), 
  965.           7 (dimblk2), 40 (dimscale), 41 (dimasz), 42 (dimexo), 
  966.           43 (dimdli), 44 (dimexe), 45 (dimrnd), 46 (dimdle), 
  967.           47 (dimtp), 48 (dimtm), 140 (dimtxt), 141 (dimcen), 
  968.           142 (dimtsz), 143 (dimaltf), 144 (dimlfac), 145 (dimtvp), 
  969.           146 (dimtfac), 147 (dimgap), 71 (dimtol), 72 (dimlim), 
  970.           73 (dimtih), 74 (dimtoh), 75 (dimse1), 76 (dimse2), 
  971.           77 (dimtad), 78 (dimzin), 170 (dimalt), 171 (dimaltd), 
  972.           172 (dimtofl), 173 (dimsah), 174 (dimtix), 175 (dimsoxd), 
  973.           176 (dimclrd), 177 (dimclre), 178 (dimclrt).
  974.  
  975. LTYPE     2 (linetype name), 70 (standard flag values), 3 
  976.           (descriptive text for linetype), 72 (alignment code; value 
  977.           is always 65, the ASCII code for `A'), 73 (number of dash 
  978.           length items), 40 (total pattern length), and optionally: 
  979.           49 (dash length 1), 49 (dash length 2), and so on.
  980.  
  981. LAYER     2 (layer name), 70 (standard flag values), 62 (color 
  982.           number, negative if layer is off), 6 (linetype name).
  983.           In addition to the standard flags, the 70 group flag is 
  984.           bit coded as follows:
  985.  
  986.           Table 11-6. Group 70 bit codes for LAYER table
  987.           +=====================================================+
  988.           | Flag bit | Meaning                                  |
  989.           | value    |                                          |
  990.           |----------|------------------------------------------|
  991.           | 1        | If set, layer is frozen                  |
  992.           |----------|------------------------------------------|
  993.           | 2        | If set, layer is frozen by default in    |
  994.           |          | new Viewports                            |
  995.           |----------|------------------------------------------|
  996.           | 4        | If set, layer is locked                  |
  997.           +-----------------------------------------------------+
  998.  
  999.           If no value (0) is set, the layer is on and thawed. The  
  1000.           fourth bit (8) and the eighth bit (128) are not used.
  1001.           Xref-dependent layers are output during DXFOUT. For these  
  1002.           layers, the associated linetype name in the DXF file is  
  1003.           always CONTINUOUS.
  1004.  
  1005. STYLE     2 (style name), 70 (standard flag values), 40 (fixed text  
  1006.           height; 0 if not fixed), 41 (width factor), 50 (oblique  
  1007.           angle), 71 (text generation flags), 42 (last height used),  
  1008.           3 (primary font filename), 4 (big-font file name; blank  
  1009.           if none).
  1010.  
  1011.           If the third bit (4) is set in the 70 group flags, this  
  1012.           is a vertically oriented text style.
  1013.  
  1014.           A STYLE table item is used to record shape file LOAD  
  1015.           requests also. In this case the first bit (1) is set in  
  1016.           the 70 group flags and only the 3 group (shape filename)  
  1017.           is meaningful (all the other groups are output, however).
  1018.  
  1019.           The text generation flags are a bit-coded field with the  
  1020.           following bit meanings:
  1021.  
  1022.           Table 11-7. Group 71 bit codes for STYLE table
  1023.           +=====================================================+
  1024.           | Flag bit | Meaning                                  |
  1025.           | value    |                                          |
  1026.           |----------|------------------------------------------|
  1027.           | 2        | Text is backward (mirrored in X)         |
  1028.           |----------|------------------------------------------|
  1029.           | 4        | Text is upside down (mirrored in Y)      |
  1030.           +-----------------------------------------------------+
  1031.  
  1032. UCS       2 (UCS name), 70 (standard flag values), 10, 20, 30
  1033.           (origin), 11, 21, 31 (X axis direction), 12, 22, 32 
  1034.           (Y axis direction). All in World coordinates.
  1035.  
  1036. VIEW      2 (name of view), 70 (standard flag values), 40 and 
  1037.           41 (view height and width, in DCS), 10 and 20 (view 
  1038.           center point, in DCS), 11, 21, 31 (view direction from 
  1039.           target, in WCS), 12, 22, 32 (target point, in WCS), 
  1040.           42 (lens length), 43 and 44 (front and back clipping 
  1041.           planes - offsets from target point), 50 (twist angle), 
  1042.           71 view mode (see VIEWMODE system variable in appendix A).
  1043.  
  1044.           If the first bit (1) is set in the 70 group flags, this 
  1045.           is a paper space view.
  1046.  
  1047.           (See chapter 2 of the "AutoLISP Programmer's Reference" 
  1048.           for information on DCS, the Display Coordinate System.)
  1049.  
  1050. VPORT     2 (viewport name), 70 (standard flag values), 10 and 20 
  1051.           (lower-left corner of viewport; 0.0 to 1.0), 11 and 
  1052.           21 (upper-right corner), 12 and 22 (view center point, 
  1053.           in WCS), 13 and 23 (snap base point), 14 and 24 (snap 
  1054.           spacing, X and Y), 15 and 25 (grid spacing, X and Y), 16, 
  1055.           26, 36 (view direction from target point), 17, 27, 37 
  1056.           (view target point), 40 (view height), 41 (viewport aspect 
  1057.           ratio), 42 (lens length), 43 and 44 (front and back 
  1058.           clipping planes; offsets from target point),50 (snap 
  1059.           rotation angle), 51 (view twist angle), 68 (status field), 
  1060.           69 (ID), 71 (view mode; see VIEWMODE system variable in 
  1061.           appendix A), 72 (circle zoom percent), 73 (fast zoom 
  1062.           setting), 74 (UCSICON setting), 75 (snap on/off), 76 (grid 
  1063.           on/off), 77 (snap style), 78 (snap isopair).
  1064.  
  1065.           The VPORT table is unique in that it may contain several 
  1066.           entries with the same name (indicating a multiple-viewport 
  1067.           configuration). The entries corresponding to the active 
  1068.           viewport configuration all have the name *ACTIVE. The 
  1069.           first such entry describes the current viewport.
  1070.  
  1071.  
  1072. BLOCKS Section
  1073. --------------
  1074. The Blocks section of the DXF file contains all the Block 
  1075. Definitions. This section contains the entities that make up the 
  1076. Blocks used in the drawing, including anonymous Blocks generated by 
  1077. the HATCH command and by associative dimensioning. The format of the 
  1078. entities in this section is identical to those in the Entities 
  1079. section described later, so see that section for details. All 
  1080. entities in the Blocks section appear between Block and Endblk 
  1081. entities. Block and Endblk entities appear only in the Blocks 
  1082. section. Block definitions are never nested (that is, no Block or 
  1083. Endblk entity ever appears within another Block-Endblk pair), 
  1084. although a Block definition can contain an INSERT entity.
  1085.  
  1086. External References are written in the DXF file as any Block 
  1087. Definition, except they also include a text string (group code 1) of 
  1088. the path and filename of the External Reference. This is the text 
  1089. string format:
  1090.  
  1091.    Xref filename
  1092.  
  1093.  
  1094. ENTITIES Section
  1095. ----------------
  1096. Entity items appear in both the BLOCK and ENTITIES sections of the 
  1097. DXF file. The appearance of entities in the two sections is 
  1098. identical.
  1099.  
  1100. The following gives the format of each entity as it appears in the 
  1101. file. Some groups that define an entity always appear, and some are 
  1102. optional and appear only if they differ from their default values. 
  1103. In the following discussion, groups that always occur are given by 
  1104. their group number and function, while optional groups are indicated 
  1105. by -optional N following the group description. N is the default 
  1106. value if the group is omitted.
  1107.  
  1108. Programs that read DXF files should not assume that the groups 
  1109. describing an entity occur in the order given here. The end of the 
  1110. groups that make up an entity is indicated by the next 0 group, 
  1111. beginning the next entity or indicating the end of the section.
  1112.  
  1113. Remember that a DXF file is a complete representation of the drawing 
  1114. database, and that as AutoCAD is further enhanced, new groups will 
  1115. be added to entities to accommodate additional features. 
  1116. Accommodating DXF files from future releases of AutoCAD will be 
  1117. easier if you write your DXF processing program in a table-driven 
  1118. way, ignoring any groups not presently defined, and making no 
  1119. assumptions about the order of groups in an entity.
  1120.  
  1121. Each entity begins with a 0 group identifying the entity type. The 
  1122. names used for the entities are given on the following pages. Every 
  1123. entity contains an 8 group that gives the name of the layer on which 
  1124. the entity resides. Each entity may have elevation, thickness, 
  1125. linetype, or color information associated with it.
  1126.  
  1127. If handles are enabled, every entity has a 5 group containing its 
  1128. handle (as a string representing a hexadecimal number).
  1129.  
  1130. The following groups are included only if the entity has nondefault 
  1131. values for these properties. When a group is omitted, its default 
  1132. value upon input (when using DXFIN) is indicated in the third 
  1133. column. If the value of a group is equal to the default, it is 
  1134. omitted upon output (when using DXFOUT).
  1135.  
  1136. Table 11-8. Group codes common to all entities
  1137. +==================================================================+
  1138. | Group  | Meaning                                 | If omitted,   |
  1139. | code   |                                         | defaults to...|
  1140. |--------|-----------------------------------------|---------------|
  1141. | 6      | Linetype name (if not BYLAYER). The     | BYLAYER       |
  1142. |        | special name BYBLOCK indicates a        |               |
  1143. |        | floating linetype                       |               |
  1144. |--------|-----------------------------------------|---------------|
  1145. | 38     | Elevation (if nonzero). Exists only in  | 0             |
  1146. |        | output from versions prior to R11.      |               |
  1147. |        | Otherwise, Z coordinates are supplied   |               |
  1148. |        | as 3x-groups as part of each of the     |               |
  1149. |        | entity's defining points                |               |
  1150. |--------|-----------------------------------------|---------------|
  1151. | 39     | Thickness (if nonzero)                  | 0             |
  1152. |--------|-----------------------------------------|---------------|
  1153. | 62     | Color number (if not BYLAYER). Zero     | BYLAYER       |
  1154. |        | indicates the BYBLOCK (floating) color. |               |
  1155. |        | 256 indicates the BYLAYER color         |               |
  1156. |--------|-----------------------------------------|---------------|
  1157. | 67     | Absent or zero indicates entity is in   | 0             |
  1158. |        | model space. One indicates entity is    |               |
  1159. |        | in paper space, other values are        |               |
  1160. |        | reserved                                |               |
  1161. |--------|-----------------------------------------|---------------|
  1162. | 210,   | These groups are included for each Line,| 0,0,1         |
  1163. | 220,   | Point, Circle, Shape, Text, Arc, Trace, |               |
  1164. | 230    | Solid, Block Reference, Polyline,       |               |
  1165. |        | Dimension, Attribute, and Attribute     |               |
  1166. |        | Definition entity if its extrusion      |               |
  1167. |        | direction is not parallel to the World  |               |
  1168. |        | Z axis. They indicate the X, Y, and Z   |               |
  1169. |        | components of the entity's extrusion    |               |
  1170. |        | direction                               |               |
  1171. +------------------------------------------------------------------+
  1172.  
  1173. The rest of the groups that make up an entity item are described 
  1174. next. Many of the entities include "flag" groups. These are integer 
  1175. codes (6x or 7x groups) that encode various pieces of information 
  1176. regarding the entity, and are specific to the particular entity 
  1177. type. In the following descriptions, the term bit-coded means that 
  1178. the flag contains various true/false values coded as the sum of the 
  1179. bit values given. Any bits not defined in the following section 
  1180. should be ignored in these fields and set to zero when constructing 
  1181. a DXF file.
  1182.  
  1183. LINE      10, 20, 30 (start point), 11, 21, 31 (endpoint).
  1184.  
  1185. POINT     10, 20, 30 (point).
  1186.  
  1187.           Point entities have an optional 50 group that determines 
  1188.           the orientation of PDMODE images. The group value is the 
  1189.           negative of the Entity Coordinate Systems (ECS) angle of 
  1190.           the UCS X axis in effect when the point was drawn. The X 
  1191.           axis of the UCS in effect when the point was drawn is 
  1192.           always parallel to the XY plane for the point's ECS, and 
  1193.           the angle between the UCS X axis and the ECS X axis is a 
  1194.           single 2D angle. The value in group 50 is the angle from 
  1195.           horizontal (the effective X axis) to the ECS X axis. 
  1196.           Entity Coordinate Systems (ECS) are described later in 
  1197.           this section.
  1198.  
  1199. CIRCLE    10, 20, 30 (center), 40 (radius).
  1200.  
  1201. ARC       10, 20, 30 (center), 40 (radius), 50 (start angle), 51 
  1202.           (end angle).
  1203.  
  1204. TRACE     Four points defining the corners of the trace: (10, 20, 
  1205.           30), (11, 21, 31), (12, 22, 32), and (13, 23, 33).
  1206.  
  1207. SOLID     Four points defining the corners of the solid: (10, 20, 
  1208.           30), (11, 21, 31), (12, 22, 32), and (13, 23, 33). If only 
  1209.           three points were entered (forming a triangular solid), 
  1210.           the third and fourth points will be the same.
  1211.  
  1212. TEXT      10, 20, 30 (insertion point), 40 (height), 1 (text value), 
  1213.           50 (rotation angle -optional 0), 41 (relative X-scale 
  1214.           factor -optional 1), 51 (oblique angle -optional 0), 7 
  1215.           (text style name -optional STANDARD), 71 (text generation 
  1216.           flags -optional 0), 72 (horizontal justification type -
  1217.           optional 0), 73 (vertical justification type -optional 0) 
  1218.           11, 21, 31 (alignment point -optional, appears only if 72 
  1219.           or 73 group is present and nonzero).
  1220.  
  1221.           The "text generation flags" are a bit-coded field with 
  1222.           meanings as follows:
  1223.  
  1224.           Table 11-9. Group 71 bit codes for Text entity
  1225.           +=====================================================+
  1226.           | Flag bit | Meaning                                  |
  1227.           | value    |                                          |
  1228.           |----------|------------------------------------------|
  1229.           | 2        | Text is backward (mirrored in X)         |
  1230.           |----------|------------------------------------------|
  1231.           | 4        | Text is upside down (mirrored in Y)      |
  1232.           +-----------------------------------------------------+
  1233.  
  1234.           The justification-type value (group codes 72 and 73, not 
  1235.           bit-coded) indicates the text-justification style used on 
  1236.           the text, as shown in the following table:
  1237.  
  1238.           Table 11-10.  Group 72 & 73 bit codes for Text entity
  1239.           +======================================================+
  1240.           | Group 73   | Group 72 (horizontal alignment)         |
  1241.           |(vertical   |-----------------------------------------|
  1242.           | alignment) |0    |1      |2     |3      |4     |5    |
  1243.           |------------|-----|-------|------|-------|------|-----|
  1244.           |3 (Top)     |TLeft|TCenter|TRight|       |      |     |
  1245.           |------------|-----|-------|------|-------|------|-----|
  1246.           |2 (Middle)  |MLeft|MCenter|MRight|       |      |     |
  1247.           |------------|-----|-------|------|-------|------|-----|
  1248.           |1 (Bottom)  |BLeft|BCenter|BRight|       |      |     |
  1249.           |------------|-----|-------|------|-------|------|-----|
  1250.           |0 (Baseline)|Left |Center |Right |Aligned|Middle| Fit |
  1251.           +------------------------------------------------------+
  1252.  
  1253.           If the justification is anything other than baseline/left 
  1254.           (groups 72 and 73 both 0), group codes 11, 21, and 31 
  1255.           specify the alignment point (or the second alignment point 
  1256.           for Align or Fit).
  1257.  
  1258.           DXFOUT handles ASCII control characters in text strings by 
  1259.           expanding the character into a ^ (caret) followed by the 
  1260.           appropriate letter. For example, an ASCII Control-G (BEL, 
  1261.           decimal code 7) is output as ^G. If the text itself 
  1262.           contains a caret character, it is expanded to ^ (caret, 
  1263.           space). DXFIN performs the complementary conversion.
  1264.  
  1265. SHAPE     10, 20, 30 (insertion point), 40 (size), 2 (shape name), 
  1266.           50 (rotation angle -optional 0), 41 (relative X-scale 
  1267.           factor -optional 1), 51 (oblique angle -optional 0).
  1268.  
  1269. BLOCK     2 (Block name), 3 (this is also the Block name), 70 (Block 
  1270.           type flag), 10, 20, 30 (Block base point), and if the 
  1271.           Block is an Xref Block it will also contain group code 1 
  1272.           (Xref pathname). Block entities appear only in the BLOCKS 
  1273.           section, not in the ENTITIES section. The "Block type 
  1274.           flag" (group 70) is bit-coded, with the following bit 
  1275.           meanings:
  1276.  
  1277.           Table 11-11. Group 70 bit codes for Block table  
  1278.           +=======================================================+
  1279.           | Flag bit | Meaning                                    |
  1280.           | value    |                                            |
  1281.           |----------|--------------------------------------------|
  1282.           | 1        | This is an anonymous Block generated by    |
  1283.           |          | hatching, associative dimensioning, other  |
  1284.           |          | internal operations, or an application     |
  1285.           |----------|--------------------------------------------|
  1286.           | 2        | This Block has Attributes                  |
  1287.           |----------|--------------------------------------------|
  1288.           | 4        | This Block is an external reference (Xref) |
  1289.           |----------|--------------------------------------------|
  1290.           | 8        | not used                                   |
  1291.           |----------|--------------------------------------------|
  1292.           | 16       | This Block is externally dependent         |
  1293.           |----------|--------------------------------------------|
  1294.           | 32       | This is a resolved external reference, or  |
  1295.           |          | dependent of an external reference         |
  1296.           |----------|--------------------------------------------|
  1297.           | 64       | This definition is referenced              |
  1298.           +-------------------------------------------------------+
  1299.  
  1300. ENDBLK    No groups. Appears only in BLOCKS section.
  1301.  
  1302. INSERT    66 (Attributes follow flag -optional 0), 2 (Block name), 
  1303.           10, 20, 30 (insertion point), 41 (X- scale factor 
  1304.           -optional 1), 42 (Y scale factor -optional 1), 43 (Z- 
  1305.           scale factor -optional 1), 50 (rotation angle -optional 
  1306.           0), 70 and 71 (column and row counts -optional 1), 44 and 
  1307.           45 (column and row spacing -optional 0).
  1308.  
  1309.           If the value of the "Attributes follow" flag is 1, a 
  1310.           series of Attribute (Attrib) entities is expected to 
  1311.           follow the Insert, terminated by a sequence end (Seqend) 
  1312.           entity.
  1313.  
  1314. ATTDEF    10, 20, 30 (text start), 40 (text height), 1 (default 
  1315.           value, see "Text" on page 260 for handling of ASCII 
  1316.           control characters), 3 (prompt string), 2 (tag string), 70 
  1317.           (Attribute flags), 73 (field length -optional 0), 50 (text 
  1318.           rotation - optional 0), 41 (relative X scale factor 
  1319.           -optional 1), 51 (oblique angle -optional 0), 7 (text 
  1320.           style name -optional STANDARD), 71 (text generation flags 
  1321.           -optional 0, see "Text" on page 260), 72  (horizontal text 
  1322.           justification type - optional 0, see "Text" on page 260), 
  1323.           74 (vertical text justification type -optional 0 see group 
  1324.           73 in "Text" on page 260), 11, 21, 31 (alignment point 
  1325.           -optional, appears only if 72 or 74 group is present and 
  1326.           nonzero).
  1327.  
  1328.           The "Attribute flags" (group code 70) are a bit-coded 
  1329.           field in which the bits have the following meanings:
  1330.  
  1331.           Table 11-12. Group 70 bit codes for Attdef entity
  1332.           +=======================================================+
  1333.           | Flag bit | Meaning                                    |
  1334.           | value    |                                            |
  1335.           |----------|--------------------------------------------|
  1336.           | 1        | Attribute is invisible (does not display)  |
  1337.           |----------|--------------------------------------------|
  1338.           | 2        | This is a constant Attribute               |
  1339.           |----------|--------------------------------------------|
  1340.           | 4        | Verification is required on input of this  |
  1341.           |          | Attribute                                  |
  1342.           |----------|--------------------------------------------|
  1343.           | 8        | Attribute is preset (no prompt during      |
  1344.           |          | insertion)                                 |
  1345.           +-------------------------------------------------------+
  1346.  
  1347. ATTRIB    10, 20, 30 (text start), 40 (text height), 1 (value, see 
  1348.           "Text" on page 260 for handling ASCII control characters), 
  1349.           2 (Attribute tag), 70 (Attribute flags; see Attdef), 73 
  1350.           (field length -optional 0), 50 (text rotation -optional 
  1351.           0), 41 (relative X scale factor -optional 1), 51 (oblique 
  1352.           angle -optional 0), 7 (text style name -optional 
  1353.           STANDARD), 71 (text generation flags -optional 0, see 
  1354.           "Text" on page 260), 72 (horizontal text justification 
  1355.           type -optional 0, see "Text" on page 260), 74 (vertical 
  1356.           text justification type -optional 0, see group 73 in 
  1357.           "Text" on page 260), 11, 21, 31 (alignment point 
  1358.           -optional, appears only if 72 or 74 group is present 
  1359.           and nonzero).
  1360.  
  1361. POLYLINE  66 (vertices-follow flag), 10, 20, 30 (polyline elevation 
  1362.           - 30 supplies elevation, 10 and 20 are always set to 
  1363.           zero), 70 (Polyline flag -optional 0), 40 (default 
  1364.           starting width - optional 0), 41 (default ending width 
  1365.          -optional 0), 71 and 72 (polygon mesh M and N vertex counts 
  1366.           -optional 0), 73 and 74 (smooth surface M and N densities 
  1367.           -optional 0), 75 (curves and smooth surface type -optional 
  1368.           0). The default widths apply to any vertex that doesn't 
  1369.           supply widths (see later).
  1370.  
  1371.           The "vertices follow" flag is always 1, indicating that a 
  1372.           series of Vertex entities is expected to follow the 
  1373.           Polyline, terminated by a sequence end (Seqend) entity. 
  1374.           The polyline flag (group code 70) is a bit-coded field 
  1375.           with bits defined as follows:
  1376.  
  1377.           Table 11-13. Group 70 bit codes for Polyline entity
  1378.           +======================================================+
  1379.           | Flag bit | Meaning                                   |
  1380.           | value    |                                           |
  1381.           |----------|-------------------------------------------|
  1382.           | 1        | This is a closed Polyline (or a polygon   |
  1383.           |          | mesh closed in the M direction)           |
  1384.           |----------|-------------------------------------------|
  1385.           | 2        | Curve-fit vertices have been added        |
  1386.           |----------|-------------------------------------------|
  1387.           | 4        | Spline-fit vertices have been added       |
  1388.           |----------|-------------------------------------------|
  1389.           | 8        | This is a 3D Polyline                     |
  1390.           |----------|-------------------------------------------|
  1391.           | 16       | This is a 3D polygon mesh.                |
  1392.           |          | Group 75 indicates the smooth surface type|
  1393.           |          | as follows:                               |
  1394.           |          | 0 = no smooth surface fitted              |
  1395.           |          | 5 = quadratic B-spline surface            |
  1396.           |          | 6 = cubic B-spline surface                |
  1397.           |          | 8 = Bezier surface                        |
  1398.           |----------|-------------------------------------------|
  1399.           | 32       | The polygon mesh is closed in the N       |
  1400.           |          | direction                                 |
  1401.           |----------|-------------------------------------------|
  1402.           | 64       | This Polyline is a polyface mesh          |
  1403.           |----------|-------------------------------------------|
  1404.           | 128      | The linetype pattern is generated         |
  1405.           |          | continuously around the vertices of       |
  1406.           |          | this Polyline                             |
  1407.           +------------------------------------------------------+
  1408.  
  1409.           A polyface mesh is represented in DXF as a variant of a 
  1410.           Polyline entity. The Polyline header is identified as 
  1411.           introducing a polyface mesh by the presence of the 64 bit 
  1412.           in the Polyline flags (70) group. The 71 group specifies 
  1413.           the number of vertices in the mesh, and the 72 group, the 
  1414.           number of faces. While these counts are correct for all 
  1415.           meshes created with the PFACE command, applications are 
  1416.           not required to place correct values in these fields, and 
  1417.           AutoCAD actually never relies upon their accuracy.
  1418.  
  1419.           Following the Polyline header is a sequence of Vertex 
  1420.           entities that specify the vertex coordinates and faces 
  1421.           that compose the mesh. Vertices such as these are 
  1422.           described in the following subsection on Vertex.
  1423.  
  1424.           Applications might want to represent polygons with an 
  1425.           arbitrarily large number of sides in polyface meshes. 
  1426.           However, the AutoCAD entity structure imposes a limit on 
  1427.           the number of vertices that a given face entity can 
  1428.           specify. You can represent more complex polygons by 
  1429.           decomposing them into triangular wedges. Their edges 
  1430.           should be made invisible to prevent visible artifacts of 
  1431.           this subdivision from being drawn. The PFACE command 
  1432.           performs this subdivision automatically, but when 
  1433.           applications generate polyface meshes directly, the 
  1434.           applications must do this themselves.
  1435.  
  1436.           The number of vertices per face is the key parameter in 
  1437.           this subdivision process. The PFACEVMAX system variable 
  1438.           provides an application with the number of vertices per 
  1439.           face entity. This value is read-only, and is set to 4.
  1440.  
  1441.           Polyface meshes created with the PFACE command are always 
  1442.           generated with all the vertex coordinate entities first, 
  1443.           followed by the face definition entities. The code within 
  1444.           AutoCAD that processes polyface meshes does not, at 
  1445.           present, require this ordering; it works even with 
  1446.           interleaved vertex coordinates and face definitions as 
  1447.           long as no face specifies a vertex with an index that 
  1448.           appears after it in the database. Programs that read 
  1449.           polyface meshes from DXF would be wise to be as tolerant 
  1450.           of odd vertex and face ordering as AutoCAD is.
  1451.  
  1452. VERTEX    10, 20, 30 (location), 40 (starting width -optional, see 
  1453.           earlier), 41 (ending width -optional, see above), 42 
  1454.           (bulge -optional 0), 70 (vertex flags -optional 0), 50 
  1455.           (curve fit tangent direction -optional). The bulge is the 
  1456.           tangent of 1/4 the included angle for an arc segment, made 
  1457.           negative if the arc goes clockwise from the start point to 
  1458.           the endpoint; a bulge of 0 indicates a straight segment, 
  1459.           and a bulge of 1 is a semicircle. The meaning of the bit-
  1460.           coded Vertex flag (group code 70) is shown in the 
  1461.           following table
  1462.  
  1463.           Table 11-14. Group 70 bit codes for Vertex entity
  1464.           +========================================================+
  1465.           | Flag bit | Meaning                                     |
  1466.           | value    |                                             |
  1467.           |----------|---------------------------------------------|
  1468.           | 1        | Extra vertex created by curve-fitting       |
  1469.           |----------|---------------------------------------------|
  1470.           | 2        | Curve-fit tangent defined for this vertex.  |
  1471.           |          | A curve-fit tangent direction of 0 may be   |
  1472.           |          | omitted from the DXF output, but is         |
  1473.           |          | significant if this bit is set              |
  1474.           |----------|---------------------------------------------|
  1475.           | 4        | Unused (never set in DXF files)             |
  1476.           |----------|---------------------------------------------|
  1477.           | 8        | Spline vertex created by spline-fitting     |
  1478.           |----------|---------------------------------------------|
  1479.           | 16       | Spline frame control point                  |
  1480.           |----------|---------------------------------------------|
  1481.           | 32       | 3D Polyline vertex                          |
  1482.           |----------|---------------------------------------------|
  1483.           | 64       | 3D polygon mesh vertex                      |
  1484.           |----------|---------------------------------------------|
  1485.           | 128      | Polyface mesh vertex                        |
  1486.           +--------------------------------------------------------+
  1487.  
  1488.           Every Vertex that is part of a polyface mesh has the 128 
  1489.           bit set in its Vertex flags (70) group. If the entity 
  1490.           specifies the coordinates of a vertex of the mesh, the 64 
  1491.           bit is set as well and the 10, 20, and 30 groups give the 
  1492.           vertex coordinates. The vertex indexes are determined by 
  1493.           the order in which the Vertex entities appear within the 
  1494.           Polyline, with the first numbered 1.
  1495.  
  1496.           If the Vertex defines a face of the mesh, its Vertex flags 
  1497.           (70) group has the 128 bit set but not the 64 bit. The 10, 
  1498.           20, and 30 (location) groups of the face entity are 
  1499.           irrelevant and are always written as zero in a DXF file. 
  1500.           The vertex indexes that define the mesh are given by 71, 
  1501.           72, 73, and 74 groups, the values of which are integers 
  1502.           specifying one of the previously defined vertices by 
  1503.           index. If the index is negative, the edge that begins with 
  1504.           that vertex is invisible. The first zero vertex marks the 
  1505.           end of the vertices of the face. Since the 71 through 74 
  1506.           groups are optional fields with default values of zero, 
  1507.           they are present in DXF only if nonzero.
  1508.  
  1509. SEQEND    No fields. This entity marks the end of vertices (Vertex 
  1510.           type name) for a Polyline, or the end of Attribute 
  1511.           entities (Attrib type name) for an Insert entity that has 
  1512.           Attributes (indicated by 66 group present and nonzero in 
  1513.           Insert entity).
  1514.  
  1515. 3DFACE    Four points defining the corners of the face: (10, 20, 
  1516.           30), (11, 21, 31), (12, 22, 32), and (13, 23, 33). 70 
  1517.           (invisible           edge flags -optional 0). If only 
  1518.           three points are entered (forming a triangular face), the 
  1519.           third and fourth points will be the same. The meanings of 
  1520.           the bit-coded "invisible edge flags" are shown in the 
  1521.           following table:
  1522.  
  1523.           Table 11-15. Group 70 bit codes for 3D Face entity
  1524.           +===========================================+
  1525.           | Flag bit | Meaning                        |
  1526.           | value    |                                |
  1527.           |----------|--------------------------------|
  1528.           | 1        | First edge is invisible        |
  1529.           |----------|--------------------------------|
  1530.           | 2        | Second edge is invisible       |
  1531.           |----------|--------------------------------|
  1532.           | 4        | Third edge is invisible        |
  1533.           |----------|--------------------------------|
  1534.           | 8        | Fourth edge is invisible       |
  1535.           +-------------------------------------------+
  1536.  
  1537. VIEWPORT  10,20,30 (center point of entity in paper space 
  1538.           coordinates), 40 (width in paper space units), 41 (height 
  1539.           in paper space units), 68 (viewport status field), 69 
  1540.           (viewport ID, permanent during editing sessions, but 
  1541.           mutable between sessions; the paper space viewport entity 
  1542.           always has an ID of 1).
  1543.  
  1544.           The value of the viewport status field (68) is interpreted  
  1545.           as follows:
  1546.  
  1547.           -1                On, but is fully off-screen or is one of 
  1548.                             the viewports not active because the 
  1549.                             $MAXACTVP count is currently being 
  1550.                             exceeded.
  1551.  
  1552.           0                 Off.
  1553.  
  1554.           <positive value>  On, active and the value indicates the 
  1555.                             order of "stacking" for the viewports, 
  1556.                             with 1 applying to the active viewport, 
  1557.                             which is also the highest, 2 applying 
  1558.                             to the next viewport in the stack, 
  1559.                             and so on.
  1560.  
  1561.           In addition, the extended entity data groups in the 
  1562.           following table apply to viewports.
  1563.  
  1564.           NOTE: In contrast to normal entity data, the same extended 
  1565.           entity group code can appear multiple times, and order is 
  1566.           important.
  1567.  
  1568.           Table 11-16. Extended entity group codes for Viewports  
  1569.           +========================================================+
  1570.           | Group   | Description                                  |
  1571.           |---------|----------------------------------------------|
  1572.           | 1001    | Application name. This field will always be  |
  1573.           |         | the string "ACAD"                            |
  1574.           |---------|----------------------------------------------|
  1575.           | 1000    | Begin viewport data. This field will always  |
  1576.           |         | be the string "MVIEW". Other data groups may |
  1577.           |         | appear in the future                         |
  1578.           |---------|----------------------------------------------|
  1579.           | 1002    | Begin window descriptor data. This field will|
  1580.           |         | always be the string "{"                     |
  1581.           |---------|----------------------------------------------|
  1582.           | 1070    | Extended entity data version number. For     |
  1583.           |         | Releases 11 and 12, this field will always be|
  1584.           |         | the integer 16                               |
  1585.           |---------|----------------------------------------------|
  1586.           | 1010    | View target point X value                    |
  1587.           |---------|----------------------------------------------|
  1588.           | 1020    | View target point Y value                    |
  1589.           |---------|----------------------------------------------|
  1590.           | 1030    | View target point Z value                    |
  1591.           |---------|----------------------------------------------|
  1592.           | 1010    | View direction vector X value                |
  1593.           |---------|----------------------------------------------|
  1594.           | 1020    | View direction vector Y value                |
  1595.           |---------|----------------------------------------------|
  1596.           | 1030    | View direction vector Z value                |
  1597.           |---------|----------------------------------------------|
  1598.           | 1040    | View twist angle                             |
  1599.           |---------|----------------------------------------------|
  1600.           | 1040    | View height                                  |
  1601.           |---------|----------------------------------------------|
  1602.           | 1040    | View center point X value                    |
  1603.           |---------|----------------------------------------------|
  1604.           | 1040    | View center point Y value                    |
  1605.           |---------|----------------------------------------------|
  1606.           | 1040    | Perspective lens length                      |
  1607.           |---------|----------------------------------------------|
  1608.           | 1040    | Front clip plane Z value                     |
  1609.           |---------|----------------------------------------------|
  1610.           | 1040    | Back clip plane Z value                      |
  1611.           |---------|----------------------------------------------|
  1612.           | 1070    | View mode                                    |
  1613.           |---------|----------------------------------------------|
  1614.           | 1070    | Circle zoom                                  |
  1615.           |---------|----------------------------------------------|
  1616.           | 1070    | Fast zoom setting                            |
  1617.           |---------|----------------------------------------------|
  1618.           | 1070    | UCSICON setting                              |
  1619.           |---------|----------------------------------------------|
  1620.           | 1070    | Snap ON/OFF                                  |
  1621.           |---------|----------------------------------------------|
  1622.           | 1070    | Grid ON/OFF                                  |
  1623.           |---------|----------------------------------------------|
  1624.           | 1070    | Snap style                                   |
  1625.           |---------|----------------------------------------------|
  1626.           | 1070    | Snap ISOPAIR                                 |
  1627.           |---------|----------------------------------------------|
  1628.           | 1040    | Snap angle                                   |
  1629.           |---------|----------------------------------------------|
  1630.           | 1040    | Snap base point UCS X coordinate             |
  1631.           |---------|----------------------------------------------|
  1632.           | 1040    | Snap base point UCS Y coordinate             |
  1633.           |---------|----------------------------------------------|
  1634.           | 1040    | Snap X spacing                               |
  1635.           |---------|----------------------------------------------|
  1636.           | 1040    | Snap Y spacing                               |
  1637.           |---------|----------------------------------------------|
  1638.           | 1040    | Grid X spacing                               |
  1639.           |---------|----------------------------------------------|
  1640.           | 1040    | Grid Y spacing                               |
  1641.           |---------|----------------------------------------------|
  1642.           | 1070    | Hidden in plot flag                          |
  1643.           |---------|----------------------------------------------|
  1644.           | 1002    | Begin frozen layer list (possibly empty).    |
  1645.           |         | This field will always be the string "{"     |
  1646.           |---------|----------------------------------------------|
  1647.           | 1003... | The names of layers frozen in this viewport. |
  1648.           |         | This list may include Xref-dependent layers. |
  1649.           |         | Any number of 1003 groups may appear here    |
  1650.           |---------|----------------------------------------------|
  1651.           | 1002    | End frozen layer list. This field will always|
  1652.           |         | be the string "}"                            |
  1653.           |---------|----------------------------------------------|
  1654.           | 1002    | End viewport data. This field will always be |
  1655.           |         | the string "}"                               |
  1656.           +--------------------------------------------------------+
  1657.  
  1658. DIMENSION 2 (name of pseudo-Block containing the current dimension 
  1659.           entity geometry), 3 (dimension style name), 10, 20, 30 
  1660.           (definition point for all dimension types), 11, 21, 31 
  1661.           (middle point of dimension text), 12, 22, 32 (dimension 
  1662.           block translation vector), 70 (Dimension type), 1 
  1663.           (dimension text explicitly entered by the user. If null or 
  1664.           "<>", the dimension measurement is drawn as the text, if 
  1665.           " " [one blank space], the text is suppressed. Anything 
  1666.           else is drawn as the text). 13, 23, 33 (definition point 
  1667.           for linear and angular dimensions), 14, 24, 34 (definition 
  1668.           point for linear and angular dimensions), 15, 25, 35 
  1669.           (definition point for diameter, radius, and angular 
  1670.           dimensions), 16, 26, 36 (point defining dimension arc for 
  1671.           angular dimensions), 40 (leader length for radius and 
  1672.           diameter dimensions), 50 (angle of rotated, horizontal, or 
  1673.           vertical linear dimensions).
  1674.  
  1675.           The dimension type (group code 70) is an integer-coded 
  1676.           field with the following values:
  1677.  
  1678.           Table 11-17. Group 70 integer codes for Dimension entity  
  1679.           +========================================================+
  1680.           | Group   | Description                                  |
  1681.           |---------|----------------------------------------------|
  1682.           | 0       | Rotated, horizontal, or vertical             |
  1683.           |---------|----------------------------------------------|
  1684.           | 1       | Aligned                                      |
  1685.           |---------|----------------------------------------------|
  1686.           | 2       | Angular                                      |
  1687.           |---------|----------------------------------------------|
  1688.           | 3       | Diameter                                     |
  1689.           |---------|----------------------------------------------|
  1690.           | 4       | Radius                                       |
  1691.           |---------|----------------------------------------------|
  1692.           | 5       | Angular 3-point                              |
  1693.           |---------|----------------------------------------------|
  1694.           | 6       | Ordinate                                     |
  1695.           |---------|----------------------------------------------|
  1696.           | 64      | Ordinate type. This is a bit value (bit 7)   |
  1697.           |         | used only with integer value 6. If set,      |
  1698.           |         | ordinate is X-type; if not set, ordinate is  |
  1699.           |         | Y-type                                       |
  1700.           |---------|----------------------------------------------|
  1701.           | 128     | This is a bit value (bit 8) added to the     |
  1702.           |         | other group 70 values if the dimension text  |
  1703.           |         | has been positioned at a user-defined        |
  1704.           |         | location rather than at the default location |
  1705.           +--------------------------------------------------------+
  1706.  
  1707.           In addition, all dimension types have an optional group 
  1708.           (code 51) that indicates the horizontal direction for the 
  1709.           Dimension entity. This determines the orientation of 
  1710.           dimension text and dimension lines for horizontal, 
  1711.           vertical, and rotated linear dimensions. The group value 
  1712.           is the negative of the Entity Coordinate Systems (ECS) 
  1713.           angle of the UCS X axis in effect when the Dimension was 
  1714.           drawn. The X axis of the UCS in effect when the Dimension 
  1715.           was drawn is always parallel to the XY plane for the 
  1716.           Dimension's ECS, and the angle between the UCS X axis and 
  1717.           the ECS X axis is a single 2D angle. The value in group 51 
  1718.           is the angle from horizontal (the effective X axis) to the 
  1719.           ECS X axis. Entity Coordinate Systems (ECS) are described 
  1720.           later in this section.
  1721.  
  1722.           Linear dimension types with an oblique angle have an 
  1723.           optional group (code 52). When added to the rotation angle 
  1724.           of the linear dimension (group code 50) this gives the 
  1725.           angle of the extension lines. The optional group code 53 
  1726.           is the rotation angle of the dimension text away from its 
  1727.           default orientation (the direction of the dimension line).
  1728.  
  1729.           For all dimension types, the following groups represent 3D 
  1730.           WCS points:
  1731.  
  1732.           10, 20, 30
  1733.           13, 23, 33
  1734.           14, 24, 34
  1735.           15, 25, 35
  1736.  
  1737.           For all dimension types, the following groups represent 3D 
  1738.           ECS points:
  1739.  
  1740.           11, 21, 31
  1741.           12, 22, 32
  1742.           16, 26, 36
  1743.  
  1744. Linear    (13,23,33)  The point used to specify the first extension 
  1745.                       line.
  1746.           (14,24,34)  The point used to specify the second extension
  1747.                       line.
  1748.           (10,20,30)  The point used to specify the dimension line.
  1749.  
  1750.           Refer to figure 11-1 on page 267 of the "AutoCAD 
  1751.           Customization Manual"
  1752.  
  1753. Angular   (13,23,33) and (14,24,34)  The endpoints of the first
  1754.                                      extension line.
  1755.           (10,20,30) and (15,25,35)  The endpoints of the second
  1756.                                      extension line.
  1757.           (16,26,36)                 The point used to specify the
  1758.                                      dimension line arc.
  1759.  
  1760.           Refer to figure 11-2 on page 267 of the "AutoCAD 
  1761.           Customization Manual"
  1762.  
  1763. Angular   (15,25,35)  The vertex of the angle.
  1764. (3-point) (13,23,33)  The endpoints of the first extension line.
  1765.           (13,23,33)  The endpoints of the first extension line.
  1766.           (14,24,34)  The endpoints of the second extension line.
  1767.           (10,20,30)  The point used to specify the dimension line
  1768.                       arc.
  1769.  
  1770.           Refer to figure 11-3 on page 267 of the "AutoCAD 
  1771.           Customization Manual"
  1772.  
  1773. Diameter  (15,25,35)  The point used to pick the circle/arc to 
  1774.                       dimension.
  1775.           (10,20,30)  The point on that circle directly across from 
  1776.                       the pick point.
  1777.  
  1778.           Refer to figure 11-4 on page 268 of the "AutoCAD 
  1779.           Customization Manual"
  1780.  
  1781. Radius    (15,25,35)  The point used to pick the circle/arc to 
  1782.                       dimension.
  1783.           (10,20,30)  The center of that circle.
  1784.  
  1785.           Refer to figure 11-5 on page 268 of the "AutoCAD 
  1786.           Customization Manual"
  1787.  
  1788. Ordinate  (13,23,33)  The point used to select the feature.
  1789.           (14,24,34)  The point used to locate the leader end point.
  1790.  
  1791.           Refer to figure 11-6 on page 268 of the "AutoCAD 
  1792.           Customization Manual"
  1793.  
  1794.  
  1795. Entity Coordinate Systems (ECS)
  1796. -------------------------------
  1797. To save space in the drawing database (and in the DXF file), the 
  1798. points associated with each entity are expressed in terms of the 
  1799. entity's own Entity Coordinate System (ECS). The Entity Coordinate 
  1800. System allows AutoCAD to use a much more compact means of 
  1801. representation for entities. With ECS, the only additional 
  1802. information needed to describe the entity's position in 3D space is 
  1803. the 3D vector describing the Z axis of the ECS, and the elevation 
  1804. value.
  1805. For a given Z axis (or extrusion) direction, there are an infinite 
  1806. number of coordinate systems, defined by translating the origin in 
  1807. 3D space and by rotating the X and Y axes around the Z axis. 
  1808. However, for the same Z axis direction, there is only one Entity 
  1809. Coordinate System. It has the following properties:
  1810.  
  1811. o  Its origin coincides with the WCS origin.
  1812. o  The orientation of the X and Y axes within the XY plane are 
  1813.    calculated in an arbitrary, but consistent manner. AutoCAD 
  1814.    performs this calculation using the arbitrary axis algorithm 
  1815.    (described later).
  1816.  
  1817. For some entities, the ECS is equivalent to the World Coordinate 
  1818. System and all points (DXF groups 10 - 37) are expressed in World 
  1819. coordinates. See the following table.
  1820.  
  1821. Table 11-18. Coordinate systems associated with an entity type
  1822. +==================================================================+
  1823. | Entities                   | Notes                               |
  1824. |----------------------------|-------------------------------------|
  1825. | Line, Point, 3DFace,       | These entities do not lie in a      |
  1826. | 3D Polyline, 3D Vertex,    | particular plane. All points are    |
  1827. | 3D Mesh, 3D Mesh vertex    | expressed in World coordinates. Of  |
  1828. |                            | these entities, only Lines and      |
  1829. |                            | Points can be extruded; their       |
  1830. |                            | extrusion direction can differ from |
  1831. |                            | the World Z axis                    |
  1832. |----------------------------|-------------------------------------|
  1833. | Circle, Arc, Solid, Trace, | These entities are planar in        |
  1834. | Text, Attrib, Attdef,      | nature. All points are expressed    |
  1835. | Shape, Insert, 2D Polyline,| in Entity coordinates. All of these |
  1836. | 2D Vertex                  | entities can be extruded; their     |
  1837. |                            | extrusion direction can differ from |
  1838. |                            | the World Z axis                    |
  1839. |----------------------------|-------------------------------------|
  1840. | Dimension                  | Some of a Dimension's points are    |
  1841. |                            | expressed in WCS, and some in ECS   |
  1842. |----------------------------|-------------------------------------|
  1843. | Viewport                   | Expressed in World coordinates      |
  1844. |----------------------------|-------------------------------------|
  1845. | Others                     | The remaining entities have no      |
  1846. |                            | point data and their coordinate     |
  1847. |                            | systems are therefore irrelevant    |
  1848. +------------------------------------------------------------------+
  1849.  
  1850. Once AutoCAD has established the ECS for a given entity, here's how 
  1851. it works:
  1852.  
  1853. o The elevation value stored with an entity indicates how far along 
  1854.   the Z axis to shift the XY plane from the WCS origin to make it 
  1855.   coincide with the plane that the entity is in. How much of this is 
  1856.   the user-defined elevation is unimportant.
  1857.  
  1858. o Any 2D points describing the entity that were entered through the 
  1859.   UCS are transformed into the corresponding 2D points in the ECS, 
  1860.   which (more often than not) is shifted and rotated with respect to 
  1861.   the UCS.
  1862.  
  1863. These are a few ramifications of this process:
  1864.  
  1865. o You cannot reliably find out what UCS was in effect when an entity 
  1866.   was acquired.
  1867.  
  1868. o When you enter the XY coordinates of an entity in a given UCS and 
  1869.   then do a DXFOUT, you probably won't recognize those XY 
  1870.   coordinates in the DXF file. You'll have to know the method by 
  1871.   which AutoCAD calculates the X and Y axes in order to work with 
  1872.   these values.
  1873.  
  1874. o The elevation value stored with an entity and output in DXF files 
  1875.   will be a sum of the Z-coordinate difference between the UCS XY 
  1876.   plane and the ECS XY plane, and the elevation value that the user 
  1877.   specified   at the time the entity was drawn.
  1878.  
  1879.  
  1880. Arbitrary Axis Algorithm
  1881. ------------------------
  1882. The arbitrary axis algorithm is used by AutoCAD internally to 
  1883. implement the arbitrary but consistent generation of Entity 
  1884. Coordinate Systems for all entities except Lines, Points, 3D Faces, 
  1885. and 3D Polylines, which contain points in World coordinates.
  1886.  
  1887. Given a unit-length vector to be used as the Z axis of a coordinate 
  1888. system, the arbitrary axis algorithm generates a corresponding X 
  1889. axis for the coordinate system. The Y axis follows by application of 
  1890. the right-hand rule.
  1891.  
  1892. The method is to examine the given Z axis (also called the normal 
  1893. vector) and see if it is close to the positive or negative World Z 
  1894. axis. If it is, cross the World Y axis with the given Z axis to 
  1895. arrive at the arbitrary X axis. If not, cross the World Z axis with 
  1896. the given Z axis to arrive at the arbitrary X axis. The boundary at 
  1897. which the decision is made was chosen to be both inexpensive to 
  1898. calculate and completely portable across machines. This is achieved 
  1899. by having a sort of "square" polar cap, the bounds of which is 1/64, 
  1900. which is precisely specifiable in 6 decimal fraction digits and in 6 
  1901. binary fraction bits.
  1902.  
  1903. In mathematical terms, the algorithm does the following (all vectors 
  1904. are assumed to be in 3D space, specified in the World Coordinate 
  1905. System):
  1906.  
  1907. Let the given normal vector be called N.
  1908. Let the World Y axis be called Wy, which is always (0,1,0).
  1909. Let the World Z axis be called Wz, which is always (0,0,1).
  1910.  
  1911. We are looking for the arbitrary X and Y axes to go with the normal 
  1912. N. They'll be called Ax and Ay. N could also be called Az (the 
  1913. arbitrary Z axis):
  1914.  
  1915. If (abs (Nx) < 1/64) and (abs (Ny) < 1/64) then
  1916.             Ax = Wy  N (where "" is the cross-product operator).
  1917. Otherwise,
  1918.             Ax = Wz  N.
  1919.  
  1920. Scale Ax to unit length.
  1921.  
  1922. The method of getting the Ay vector would be:
  1923. Ay = N  Ax. Scale Ay to unit length.
  1924.  
  1925.  
  1926. Extended Entity Data
  1927. ====================
  1928. Extended entity data is created by applications such as the Advanced 
  1929. Modeling Extension (AME), or by routines written with AutoLISP or 
  1930. ADS. Extended entity data is also produced by creating PostScript 
  1931. output with PSOUT. If an entity contains extended data, it follows 
  1932. the entity's normal definition data.
  1933.  
  1934. The group codes 1000 through 1071 describe extended entity data. The 
  1935. following is an example of an entity containing extended entity data 
  1936. in DXF format.
  1937.                 ___
  1938. 0                  |
  1939. INSERT             |
  1940.  8                 |
  1941. 0                  |
  1942.  5                 |
  1943. 5                  |
  1944. F11                |
  1945. 15                 |-- Normal entity definition data.
  1946.  2                 |
  1947. BLOCK_A            |
  1948.  10                |
  1949. 0.0                |
  1950.  20                |
  1951. 0.0                |
  1952.  30                |
  1953. 0.0             ___|
  1954. 1001               |
  1955. AME_SOL            |
  1956. 1002               |
  1957. {                  |
  1958. 1070               |
  1959.  0                 |
  1960. 1071               |
  1961.  1.95059E+06       |
  1962. 1070               |
  1963.  519               |
  1964. 1010               |
  1965. 2.54717            |
  1966. 1020               |
  1967. 2.122642           |-- Extended entity data.
  1968. 1030               |
  1969. 2.049201           |
  1970. 1005               |
  1971. ECD                |
  1972. 1005               |
  1973. EE9                |
  1974. 1005               |
  1975. 0                  |
  1976. 1040               |
  1977. 0.0                |
  1978. 1040               |
  1979. 1.0                |
  1980. 1000               |
  1981. MILD_STEEL      ___|
  1982.                     
  1983. Figure 11-7.  Example of extended entity data 
  1984.  
  1985.  
  1986. Organization of Extended Entity Data
  1987. ====================================
  1988. As you can see in the above example, group code 1001 indicates the 
  1989. beginning of extended entity data. This is followed by one or more 
  1990. 1000 group codes. Application names are string values (in the 
  1991. example, the application name is AME_SOL). In contrast to normal 
  1992. entity data, the same group code can appear multiple times, and 
  1993. order is important.
  1994.  
  1995. Extended entity data are grouped by registered application name, and 
  1996. each registered application's group begins with a 1001 group code 
  1997. with the registered application name as the string value. Registered 
  1998. application names correspond to APPID symbol table entries, which 
  1999. are essentially placeholders for registered application names.
  2000.  
  2001. An application can use as many APPID names as needed, although one 
  2002. will often suffice. APPID names are permanent, although they can be 
  2003. purged if they aren't currently used in the drawing.
  2004.  
  2005. Each APPID name can have no more than one data group attached to 
  2006. each entity. Within an application's group, the sequence of extended 
  2007. entity data groups and their meaning is defined by the application.
  2008.  
  2009. NOTE: PostScript images and PostScript fill requests for Polylines 
  2010. are stored in the AutoCAD database as extended entity data belonging 
  2011. to the AUTOCAD_POSTSCRIPT_FIGURE application.
  2012.  
  2013. As the example in the previous figure shows, the group codes for 
  2014. extended entity data begin at 1000 and currently extend to 1071. The 
  2015. following list of extended entity data group codes are supported by 
  2016. AutoCAD, which maintains and manipulates their values as described:
  2017.  
  2018. Table 11-19. extended entity data group codes and descriptions
  2019. +==================================================================+
  2020. | Entity Name    | Group code | Description                        |
  2021. |----------------|------------|------------------------------------|
  2022. | String         | 1000       | Strings in extended entity data    |
  2023. |                |            | can be up to 255 bytes long (with  |
  2024. |                |            | the 256th byte reserved for the    |
  2025. |                |            | null character)                    |
  2026. |----------------|------------|------------------------------------|
  2027. | Application    | 1001       | Application names can be up to 31  |
  2028. | name           | also a     | bytes long (the 32d byte is        |
  2029. |                | string     | reserved for the null character).  |
  2030. |                | value      | Use of application names is        |
  2031. |                |            | described in more detail later in  |
  2032. |                |            | this section                       |
  2033. |                |            | CAUTION: Do not add a 1001 group   |
  2034. |                |            | into your extended entity data, as |
  2035. |                |            | AutoCAD will assume it is the      |
  2036. |                |            | beginning of a new application     |
  2037. |                |            | extended entity data group         |
  2038. |----------------|------------|------------------------------------|
  2039. | Control string | 1002       | An extended data control string can|
  2040. |                |            | be either "{"or "}": these braces  |
  2041. |                |            | enable applications to organize    |
  2042. |                |            | their data by subdividing the data |
  2043. |                |            | into lists. The left brace begins a|
  2044. |                |            | list, and a right brace terminates |
  2045. |                |            | the most recent list; lists can be |
  2046. |                |            | nested                             |
  2047. |                |            | When AutoCAD reads the extended    |
  2048. |                |            | entity data for a particular       |
  2049. |                |            | application, it checks to ensure   |
  2050. |                |            | that braces are balanced correctly |
  2051. |----------------|------------|------------------------------------|
  2052. | Layer name     | 1003       | Name of the layer associated with  |
  2053. |                |            | the extended entity data           |
  2054. |----------------|------------|------------------------------------|
  2055. | Binary data    | 1004       | Binary data is organized into      |
  2056. |                |            | variable-length chunks.The maximum |
  2057. |                |            | length of each chunk is 127 bytes. |
  2058. |                |            | Binary data is represented as a    |
  2059. |                |            | string of hexadecimal digits, two  |
  2060. |                |            | per binary byte, in ASCII DXF files|
  2061. |----------------|------------|------------------------------------|
  2062. | Database       | 1005       | Handles of entities in the         |
  2063. | handle         |            | drawing database                   |
  2064. |                |            | NOTE: When a drawing with handles  |
  2065. |                |            | and extended entity data handles   |
  2066. |                |            | is imported into another drawing   |
  2067. |                |            | using INSERT, INSERT *, XREF Bind, |
  2068. |                |            | XBIND, or partial DXFIN, the       |
  2069. |                |            | extended entity data handles are   |
  2070. |                |            | translated in the same manner as   |
  2071. |                |            | their corresponding entity handles,|
  2072. |                |            | thus maintaining their binding.    |
  2073. |                |            | This is also done in the EXPLODE   |
  2074. |                |            | Block operation, or for any other  |
  2075. |                |            | AutoCAD operation. When AUDIT      |
  2076. |                |            | detects an extended entity data    |
  2077. |                |            | handle that doesn't match the      |
  2078. |                |            | handle of an entity in the drawing |
  2079. |                |            | file, it is considered an error.   |
  2080. |                |            | If AUDIT is fixing entities, it    |
  2081. |                |            | sets the handle to 0.              |
  2082. |----------------|------------|------------------------------------|
  2083. | 3 reals        | 1010,      | Three real values, in the order    |
  2084. |                | 1020,      | X, Y, Z. They can be used as       |
  2085. |                | 1030       | a point or vector record. AutoCAD  |
  2086. |                |            | never alters their value           |
  2087. |----------------|------------|------------------------------------|
  2088. | World space    | 1011,      | Unlike a simple 3D point,the World |
  2089. | position       | 1021,      | space coordinates are moved,       |
  2090. |                | 1031       | scaled, rotated, and mirrored      |
  2091. |                |            | along with the parent entity to    |
  2092. |                |            | which the extended data belongs.   |
  2093. |                |            | The world space position is also   |
  2094. |                |            | stretched when the STRETCH command |
  2095. |                |            | is applied to the parent entity    |
  2096. |                |            | and this point lies within the     |
  2097. |                |            | select window                      |
  2098. |----------------|------------|------------------------------------|
  2099. | World space    | 1012,      | Also a 3D point that is scaled,    |
  2100. | displacement   | 1022,      | rotated, and mirrored along with   |
  2101. |                | 1032       | the parent (but not moved or       |
  2102. |                |            | stretched)                         |
  2103. |----------------|------------|------------------------------------|
  2104. | World          | 1013,      | Also a 3D point that is rotated    |
  2105. | direction      | 1023,      | and mirrored along with the parent |
  2106. |                | 1033       | (but not moved, scaled, or         |
  2107. |                |            | stretched).                        |
  2108. |----------------|------------|------------------------------------|
  2109. | Real           | 1040       | A real value                       |
  2110. |----------------|------------|------------------------------------|
  2111. | Distance       | 1041       | A real value that is scaled along  |
  2112. |                |            | with the parent entity             |
  2113. |----------------|------------|------------------------------------|
  2114. | Scale factor   | 1042       | Also a real value that is scaled   |
  2115. |                |            | along with the parent. The         |
  2116. |                |            | difference between a distance and  |
  2117. |                |            | a scale factor is application-     |
  2118. |                |            | defined                            |
  2119. |----------------|------------|------------------------------------|
  2120. | Integer        | 1070       | A 16-bit integer (signed or        |
  2121. |                |            | unsigned)                          |
  2122. |----------------|------------|------------------------------------|
  2123. | Long           | 1071       | A 32-bit signed (long) integer     |
  2124. +------------------------------------------------------------------+
  2125.  
  2126. For more information on extended entity data and the APPID table, 
  2127. refer to the "AutoCAD Development System Programmer's Reference" and 
  2128. the "AutoLISP Programmer's Reference."
  2129.  
  2130.  
  2131. Writing DXF Interface Programs
  2132. ==============================
  2133. Writing a program that communicates with AutoCAD via the DXF 
  2134. mechanism often appears far more difficult than it really is. The 
  2135. DXF file contains a seemingly overwhelming amount of information, 
  2136. and examining a DXF file manually may lead to the conclusion that 
  2137. the task is hopeless.
  2138.  
  2139. However, the DXF file has been designed to be easy to process by 
  2140. program, not manually. The format was intentionally constructed to 
  2141. make it easy to ignore information you don't need while easily 
  2142. reading the information you do need. Just remember to handle the 
  2143. groups in any order and ignore any group you don't care about.
  2144.  
  2145. As an example, the following is a Microsoft BASIC program that reads 
  2146. a DXF file and extracts all the Line entities from the drawing 
  2147. (ignoring lines that appear inside Blocks). It prints the endpoints 
  2148. of these lines on the screen. As an exercise you might try entering 
  2149. this program into your computer, running it on a DXF file from one 
  2150. of your drawings, then enhancing it to print the center point and 
  2151. radius of any circles it encounters. This program is not put forward 
  2152. as an example of clean programming technique nor the way a general 
  2153. DXF processor should be written; it is presented as an example of 
  2154. just how simple a DXF-reading program can be.
  2155.  
  2156. 1000   REM
  2157. 1010   REM Extract lines from DXF file
  2158. 1020   REM
  2159. 1030   G1% = 0
  2160. 1040   LINE INPUT "DXF file name: "; A$
  2161. 1050   OPEN "i", 1, A$ + ".dxf"
  2162. 1060   REM
  2163. 1070   REM Ignore until section start encountered
  2164. 1080   REM
  2165. 1090   GOSUB 2000
  2166. 1100   IF G% <> 0 THEN 1090
  2167. 1110   IF S$ <> "SECTION" THEN 1090 
  2168. 1120   GOSUB 2000
  2169. 1130   REM
  2170. 1140   REM Skip unless ENTITIES section
  2171. 1150   REM
  2172. 1160   IF S$ <> "ENTITIES" THEN 1090
  2173. 1170   REM
  2174. 1180   REM Scan until end of section, processing LINEs
  2175. 1190   REM
  2176. 1200   GOSUB 2000
  2177. 1210   IF G% = 0 AND S$ = "ENDSEC" THEN 2200
  2178. 1220   IF G% = 0 AND S$ = "LINE" THEN GOSUB 1400 : GOTO 1210
  2179. 1230   GOTO 1200
  2180. 1400   REM
  2181. 1410   REM Accumulate LINE entity groups
  2182. 1420   REM
  2183. 1430   GOSUB 2000
  2184. 1440   IF G% = 10 THEN X1 = X : Y1 = Y : Z1 = Z
  2185. 1450   IF G% = 11 THEN X2 = X : Y2 = Y : Z2 = Z
  2186. 1460   IF G% = 0 THEN PRINT "Line from (";X1;",";Y1;",";Z1;") to 
  2187.        (";X2;",";Y2;",";Z2;")":RETURN
  2188. 1470   GOTO 1430
  2189. 2000   REM
  2190. 2010   REM Read group code and following value
  2191. 2020   REM For X coordinates, read Y and possibly Z also
  2192. 2030   REM
  2193. 2040   IF G1% < 0 THEN G% = -G1% : G1% = 0 ELSE INPUT #1, G%
  2194. 2050   IF G% < 10 OR G% = 999 THEN LINE INPUT #1, S$ : RETURN
  2195. 2060   IF G% >= 38 AND G% <= 49 THEN INPUT #1, V : RETURN
  2196. 2080   IF G% >= 50 AND G% <= 59 THEN INPUT #1, A : RETURN
  2197. 2090   IF G% >= 60 AND G% <= 69 THEN INPUT #1, P% : RETURN
  2198. 2100   IF G% >= 70 AND G% <= 79 THEN INPUT #1, F% : RETURN
  2199. 2110   IF G% >= 210 AND G% <= 219 THEN 2130
  2200. 2115   IF G% >= 1000 THEN LINE INPUT #1, T$ : RETURN
  2201. 2120   IF G% >= 20 THEN PRINT "Invalid group code";G% : STOP
  2202. 2130   INPUT #1, X
  2203. 2140   INPUT #1, G1%
  2204. 2150   IF G1% <> (G%+10) THEN PRINT "Invalid Y coord code"; G1% : 
  2205.        STOP
  2206. 2160   INPUT #1, Y 
  2207. 2170   INPUT #1, G1%
  2208. 2180   IF G1% <> (G%+20) THEN G1% = -G1% ELSE INPUT #1, Z
  2209. 2190   RETURN
  2210. 2200   CLOSE 1
  2211.  
  2212. Writing a program that constructs a DXF file is more difficult, 
  2213. because you must maintain consistency within the drawing in order 
  2214. for AutoCAD to find the file acceptable. AutoCAD lets you omit many 
  2215. items in a DXF file and still obtain a usable drawing. The entire 
  2216. HEADER section can be omitted if you don't need to set any header 
  2217. variables. Any of the tables in the TABLES section can be omitted if 
  2218. you don't need to make any entries, and the entire TABLES section 
  2219. can be dropped if nothing in it is required. If you define any 
  2220. linetypes in the LTYPE table, this table must appear before the 
  2221. LAYER table. If no Block Definitions are used in the drawing, the 
  2222. BLOCKS section can be omitted. If present, however, the BLOCKS 
  2223. section must appear before the ENTITIES section. Within the ENTITIES 
  2224. section, you can reference layer names even though you haven't 
  2225. defined them in the LAYER table. Such layers are automatically 
  2226. created with color 7 and the CONTINUOUS linetype. The EOF item must 
  2227. be present at the end-of-file.
  2228.  
  2229. The following Microsoft BASIC program constructs a DXF file 
  2230. representing a polygon with a specified number of sides, leftmost 
  2231. origin point, and side length. This program supplies only the 
  2232. ENTITIES section of the DXF file, and places all entities generated 
  2233. on the default layer 0. This may be taken as an example of a minimum 
  2234. DXF generation program. Since this program doesn't create the 
  2235. drawing header, the drawing limits, extents, and current view will 
  2236. be invalid after performing a DXFIN on the drawing generated by this 
  2237. program. You can do a ZOOM E to fill the screen with the drawing 
  2238. generated. Then adjust the limits manually.
  2239.  
  2240. 1000   REM
  2241. 1010   REM Polygon generator
  2242. 1020   REM
  2243. 1030   LINE INPUT "Drawing (DXF) file name: "; A$
  2244. 1040   OPEN "o", 1, A$ + ".dxf"
  2245. 1050   PRINT #1, 0
  2246. 1060   PRINT #1, "SECTION"
  2247. 1070   PRINT #1, 2
  2248. 1080   PRINT #1, "ENTITIES"
  2249. 1090   PI = ATN(1) * 4
  2250. 1100   INPUT "Number of sides for polygon: "; S%
  2251. 1110   INPUT "Starting point (X,Y): "; X, Y
  2252. 1120   INPUT "Polygon side: "; D
  2253. 1130   A1 = (2 * PI) / S%
  2254. 1140   A = PI / 2
  2255. 1150   FOR I% = 1 TO S%
  2256. 1160   PRINT #1, 0
  2257. 1170   PRINT #1, "LINE"
  2258. 1180   PRINT #1, 8
  2259. 1190   PRINT #1, "0"
  2260. 1200   PRINT #1, 10
  2261. 1210   PRINT #1, X
  2262. 1220   PRINT #1, 20
  2263. 1230   PRINT #1, Y
  2264. 1240   PRINT #1, 30
  2265. 1250   PRINT #1, 0.0
  2266. 1260   NX = D * COS(A) + X
  2267. 1270   NY = D * SIN(A) + Y
  2268. 1280   PRINT #1, 11
  2269. 1290   PRINT #1, NX
  2270. 1300   PRINT #1, 21
  2271. 1310   PRINT #1, NY
  2272. 1320   PRINT #1, 31
  2273. 1330   PRINT #1, 0.0
  2274. 1340   X = NX
  2275. 1350   Y = NY
  2276. 1360   A = A + A1
  2277. 1370   NEXT I%
  2278. 1380   PRINT #1, 0
  2279. 1390   PRINT #1, "ENDSEC"
  2280. 1400   PRINT #1, 0
  2281. 1410   PRINT #1, "EOF"
  2282. 1420   CLOSE 1
  2283.  
  2284. The DXFIN command is relatively forgiving with respect to the format 
  2285. of data items. As long as a properly formatted item appears on the 
  2286. line on which the data is expected, DXFIN will accept it (of course, 
  2287. string items should not have leading spaces unless these are 
  2288. intended to be part of the string). This program takes advantage of 
  2289. this flexibility in input format, and does not try to generate a 
  2290. file appearing exactly like one generated by AutoCAD.
  2291.  
  2292. In the case of error loading a DXF file using DXFIN, AutoCAD reports 
  2293. the error with a message indicating the nature of the error and the 
  2294. last line processed in the DXF file before the error was detected. 
  2295. This may not be the line on which the error occurred, especially in 
  2296. the case of errors such as omission of required groups.
  2297.  
  2298.  
  2299. Binary Drawing Interchange Files 
  2300. ********************************
  2301.  
  2302. The ASCII DXF file format described in the preceding sections of 
  2303. this chapter is a complete representation of an AutoCAD drawing in 
  2304. an ASCII text form easily processed by other programs. In addition, 
  2305. AutoCAD can produce or read a binary form of the full DXF file, and 
  2306. accepts limited input in another binary file format. These binary 
  2307. files are described in the following sections.
  2308.  
  2309.  
  2310. Binary DXF Files 
  2311. ================ 
  2312. The DXFOUT command provides a Binary option that writes binary DXF 
  2313. files. Such a file contains all of the information present in an 
  2314. ASCII DXF file, but in a more compact form that takes, typically, 
  2315. 25% less file space and can be read and written more quickly 
  2316. (typically 5 times faster) by AutoCAD. Unlike ASCII DXF files, which 
  2317. entail a trade-off between size and floating-point accuracy, binary 
  2318. DXF files preserve all of the accuracy in the drawing database. 
  2319. AutoCAD Release 10 was the first version to support this form of DXF 
  2320. file; it cannot be read by older versions.
  2321.  
  2322. A binary DXF file begins with a 22-byte sentinel consisting of:
  2323.  
  2324.    AutoCAD Binary DXF<CR><LF><SUB><NUL>
  2325.  
  2326. Following the sentinel are (group, value) pairs as in an ASCII DXF 
  2327. file, but represented in binary form. The group code is a single-
  2328. byte binary value, and the value that follows is one of the 
  2329. following:
  2330.  
  2331. o  A two-byte integer with the least-significant byte first and the 
  2332.    most-significant byte last.
  2333.  
  2334. o  An eight-byte IEEE double precision floating-point number stored 
  2335.    with the least-significant byte first and the most-significant 
  2336.    byte last.
  2337.  
  2338. o  An ASCII string terminated by a zero (NUL) byte.
  2339.  
  2340. The type of the datum following a group is determined from the group 
  2341. code according to the same rules used in decoding ASCII DXF files. 
  2342. Translation of angles to degrees, and dates to fractional Julian 
  2343. date representation, is performed for binary files as well as for 
  2344. ASCII DXF files. The comment group, 999, is not used in binary DXF 
  2345. files.
  2346.  
  2347. Extended entity data group codes are represented in Binary DXF as a 
  2348. single byte with the value 255, followed by a 2-byte integer value 
  2349. containing the actual group code, followed by the actual value.
  2350.  
  2351. Extended entity data long (group code 1071) values occupy 4 bytes of 
  2352. data. Extended entity data binary chunks (group code 1004) are 
  2353. represented as a single-byte, unsigned integer length, followed by 
  2354. the specified number of bytes of chunk data. For example, to 
  2355. transfer an extended entity data long group, the following values 
  2356. would appear, occupying 1, 2, and 4 bytes respectively:
  2357.  
  2358.    255       Escape group code.
  2359.    1071      True group code.
  2360.    999999    Value for the 1071 group code.
  2361.  
  2362. DXFOUT writes binary DXF files with the same file type (.dxf) as for 
  2363. ASCII DXF files. The DXFIN command automatically recognizes a binary 
  2364. file (by means of its sentinel string) and loads the file. There is 
  2365. no need for you to identify it as a binary file.
  2366.  
  2367. If DXFIN encounters an error in a binary DXF file, it reports the 
  2368. byte address within the file where the error was detected.
  2369.  
  2370.  
  2371. Binary Drawing Interchange (DXB) Files
  2372. **************************************
  2373.  
  2374. The DXF file formats described earlier in this chapter are complete 
  2375. representations of an AutoCAD drawing that can be written and read 
  2376. by AutoCAD and other programs. However, AutoShade and programs 
  2377. executed via the external commands facility (chapter 3) often  need 
  2378. to supply simple geometric input to AutoCAD. For these purposes, 
  2379. another file format even more compact than the binary DXF format is 
  2380. supported. This format, called DXB (for drawing interchange binary) 
  2381. is limited in the entities it can represent.
  2382.  
  2383.  
  2384. DXBIN Command 
  2385. =============
  2386. To load a DXB file produced by a program such as AutoShade, enter 
  2387. the DXBIN command:
  2388.  
  2389.    Command: dxbin 
  2390.  
  2391. When AutoCAD prompts you, respond with the name of the file you want 
  2392. to load. You don't need to include a file type; .dxb is assumed.
  2393.  
  2394.  
  2395. DXB File Format
  2396. ===============
  2397. IMPORTANT: This information is for experienced programmers and is 
  2398. subject to change without notice.
  2399.  
  2400. The format of a DXB file is as follows:
  2401.  
  2402.    Header: "AutoCAD DXB 1.0" CR LF ^Z NUL   (19 bytes) 
  2403.    Data: Zero or more data records
  2404.    Terminator: NUL                          (1 byte) 
  2405.  
  2406. Each data record begins with a single byte identifying the record 
  2407. type, followed by data items. The data items have various forms of 
  2408. representation and encoding. In the descriptions following, each 
  2409. data item is prefixed with a letter and a hyphen. The meaning of the 
  2410. letter codes is as follows:
  2411.  
  2412. w-   16-bit integer, byte reversed in the standard 80x86 style 
  2413.      (least- significant byte first, most-significant byte second).
  2414.  
  2415. f-   IEEE 64-bit floating-point value stored with lsb first, msb 
  2416.      last (as stored by an 80x87).
  2417.  
  2418. l-   32-bit integer with the bytes reversed 80x86 style.
  2419.  
  2420. n-   Number which may be either a 16-bit integer or a floating-point 
  2421.      number depending on the most recent setting of the number mode 
  2422.      data item. The number mode defaults to 0, signifying integers. 
  2423.      If set to 1, all n- items will be read as floating-point.
  2424.  
  2425. u-   Item which is either a 32-bit integer or a floating-point 
  2426.      number depending on the most recent number mode setting. If a 
  2427.      32-bit integer, the value is scaled by multiplying it by 65536 
  2428.      (2^16). If a floating-point value, no scaling is applied.
  2429.  
  2430. a-   Item representing an angle. If number mode is integer, this is 
  2431.      a 32-bit integer representing an angle in units of millionths 
  2432.      of a degree (range 0 to 360,000,000). If a floating-point 
  2433.      number, represents degrees.
  2434.  
  2435. In the following table, the lengths include the item-type byte and 
  2436. assume the number mode is set to zero (integer mode). If number mode 
  2437. is floating-point, add 6 bytes to the length for each n- item 
  2438. present and 4 bytes for each a-, or u- item present.
  2439.  
  2440. Table 11-20. Byte length for item types  
  2441. +==================================================================+
  2442. | Item type     | Code     | Data items                 | Length   |
  2443. |               |(decimal) |                            |(bytes)   |
  2444. |---------------|----------|----------------------------|----------|
  2445. | Line          | 1        | n-fromx n-fromy            | 13       |
  2446. |               |          | n-tox n-toy                |          |
  2447. |               |          | n-fromx n-fromy n-fromz    |          |
  2448. |               |          | n-tox n-toy n-toz          |          |
  2449. |---------------|----------|----------------------------|----------|
  2450. | Point         | 2        | n-x n-y                    | 5        |
  2451. |---------------|----------|----------------------------|----------|
  2452. | Circle        | 3        | n-ctrx n-ctry n-rad        | 7        |
  2453. |---------------|----------|----------------------------|----------|
  2454. | Arc           | 8        | n-ctrx n-ctry n-rad        | 19       |
  2455. |               |          | a-starta a-enda            |          |
  2456. |---------------|----------|----------------------------|----------|
  2457. | Trace         | 9        | n-x1 n-y1 n-x2 n-y2        | 17       |
  2458. |               |          | n-x3 n-y3 n-x4 n-y4        |          |
  2459. |---------------|----------|----------------------------|----------|
  2460. | Solid         | 11       | n-x1 n-y1 n-x2 n-y2        | 17       |
  2461. |               |          | n-x3 n-y3 n-x4 n-y4        |          |
  2462. |---------------|----------|----------------------------|----------|
  2463. | Seqend        | 17       | (none)                     | 1        |
  2464. |---------------|----------|----------------------------|----------|
  2465. | Polyline      | 19       | w-closureflag              | 3        |
  2466. |---------------|----------|----------------------------|----------|
  2467. | Vertex        | 20       | n-x n-y                    | 5        |
  2468. |---------------|----------|----------------------------|----------|
  2469. | 3Dface        | 22       | n-x1 n-y1 n-z1             | 25       |
  2470. |               |          | n-x2 n-y2 n-z2             |          |
  2471. |               |          | n-x3 n-y3 n-z3             |          |
  2472. |               |          | n-x4 n-y4 n-z4             |          |
  2473. |---------------|----------|----------------------------|----------|
  2474. | Scale Factor  | 128      | f-scalefac                 | 9        |
  2475. |---------------|----------|----------------------------|----------|
  2476. | New Layer     | 129      | "layername" NUL            |layername |
  2477. |               |          |                            |length + 2|
  2478. |---------------|----------|----------------------------|----------|
  2479. | Line          | 130      | n-tox n-toy                | 5        |
  2480. | Extension     |          |                            |          |
  2481. |---------------|----------|----------------------------|----------|
  2482. | Trace         | 131      | n-x3 n-y3 n-x4 n-y4        | 9        |
  2483. | Extension     |          |                            |          |
  2484. |---------------|----------|----------------------------|----------|
  2485. | Block Base    | 132      | n-bx n-by                  | 5        |
  2486. |---------------|----------|----------------------------|----------|
  2487. | Bulge         | 133      | u-2h/d                     | 5        |
  2488. |---------------|----------|----------------------------|----------|
  2489. | Width         | 134      | n-startw n-endw            | 5        |
  2490. |---------------|----------|----------------------------|----------|
  2491. | Number Mode   | 135      | w-mode                     | 3        |
  2492. |---------------|----------|----------------------------|----------|
  2493. | New Color     | 136      | w-colornum                 | 3        |
  2494. |---------------|----------|----------------------------|----------|
  2495. | 3Dline        | 137      | n-tox n-toy n-toz          | 7        |
  2496. | Extension     |          |                            |          |
  2497. +------------------------------------------------------------------+
  2498.  
  2499. The Line Extension item extends the last line or line extension from 
  2500. its To point to a new To point:. The Trace Extension item similarly 
  2501. extends the last trace solid, or Trace Extension from its x3,y3-
  2502. x4,y4 ending line to a new x3,y3--x4,y4 line.
  2503.  
  2504. The Scale Factor is a floating-point value by which all integer 
  2505. coordinates are multiplied to obtain the floating-point coordinates 
  2506. used by the actual entities. The initial scale factor when a file is 
  2507. read is 1.0. The New Layer item creates a layer if none exists, 
  2508. giving the new layer the same defaults as the LAYER New command, and 
  2509. sets that layer as the current layer for subsequent entities. At the 
  2510. end of the DXB file load, the layer in effect before the command is 
  2511. restored.
  2512.  
  2513. The Block Base item specifies the base (origin) point of a created 
  2514. Block. The Block base must be defined before the first entity record 
  2515. is encountered. If DXB is not defining a Block, this specification 
  2516. will be ignored.
  2517.  
  2518. A Polyline consists of straight segments of fixed width connecting 
  2519. the vertices, except as overridden by the Bulge and Width items 
  2520. described below. The closure flag should be 0 or 1; if it is 1, then 
  2521. there is an implicit segment from the last vertex (immediately 
  2522. before the Seqend) to the first vertex.
  2523.  
  2524. A Bulge item, encountered between two Vertex items (or after the 
  2525. last Vertex of a closed Polyline), indicates that the two vertices 
  2526. are connected by an arc rather than a straight segment. If the line 
  2527. segment connecting the vertices would have length d, and the 
  2528. perpendicular distance from the midpoint of that segment to the arc 
  2529. is h, then the magnitude of the Bulge is (2 * h / d). The sign is 
  2530. negative if the arc from the first vertex to the second is 
  2531. clockwise. A semicircle thus has a bulge of 1 (or -1). If the number 
  2532. mode is 0 (integer), Bulge items are scaled by 2 16. If the number 
  2533. mode has been set to floating-point, then the floating-point value 
  2534. supplied is just 2*h/d (not scaled).
  2535.  
  2536. The Width item indicates the starting and ending widths of the 
  2537. segment (straight or curved) connecting two vertices. This width 
  2538. stays in effect until the next width item or the Seqend. If there is 
  2539. a Width item between the Polyline item and the first Vertex, it is 
  2540. stored as a default width for the Polyline; this saves considerable 
  2541. database space if the Polyline has several segments of this width.
  2542.  
  2543. The Number Mode item controls the mode of items with types given in 
  2544. the table above as n-, a-, or u-. If the value supplied is zero, 
  2545. these values will be integers, otherwise floating-point. The storage 
  2546. and implicit scaling conventions for these values in both modes are 
  2547. described earlier.
  2548.  
  2549. Lines share the same cells to remember the last to-point, so you 
  2550. shouldn't mix extension groups for the two entities without an 
  2551. initial group before the extension. There is no extension group for 
  2552. 3Dfaces, as there's no obvious edge to extend from.
  2553.  
  2554. The New Color group specifies the color for subsequent entities in 
  2555. the DXB file. The w-colornum word argument is in the range from 0 to 
  2556. 256. 0 means color by block, 1-255 are the standard AutoCAD colors, 
  2557. and 256 means color by layer. A color outside the range from 0 to 
  2558. 256 sets the color back to the current entity color (you can do this 
  2559. deliberately, and it can be quite handy). The initial entity color 
  2560. of material added by DXBIN is the current entity color.
  2561.  
  2562. All points specified in the DXB file are interpreted in terms of the 
  2563. current UCS at the time the DXBIN command is executed.
  2564.  
  2565.  
  2566. Writing DXB Files
  2567. =================
  2568. There is no direct AutoCAD command to write a DXB file, but the 
  2569. special ADI plotter driver can write such a file. If you want to 
  2570. create a DXB file from an AutoCAD drawing, configure the ADI plotter 
  2571. and select its DXB file output option.
  2572.  
  2573.  
  2574. Initial Graphics Exchange Specification (IGES) Files
  2575. ****************************************************
  2576.  
  2577. Using the commands described in this section, you can instruct 
  2578. AutoCAD to read and write IGES-format interchange files.
  2579.  
  2580. NOTE: The format of IGES files and the mapping performed to 
  2581. translate between AutoCAD drawing information and IGES are described 
  2582. in the separate AutoCAD/IGES Interface Specifications document.
  2583.  
  2584. IGESOUT Command
  2585. ===============
  2586. You can generate an Initial Graphics Exchange Specification (IGES) 
  2587. interchange file from an existing AutoCAD drawing by means of the 
  2588. IGESOUT command:
  2589.  
  2590.    Command: igesout 
  2591.  
  2592. When AutoCAD prompts you, respond with a filename or press 5 to 
  2593. accept the default.
  2594.  
  2595. The default name for the output file is the same as that of the 
  2596. current drawing, but with a file type of .igs. If you specify an 
  2597. explicit filename without including a file type, .igs is assumed. If 
  2598. a file with the same name already exists, it is deleted. If FILEDIA 
  2599. is on, and a file with the same name already exists, AutoCAD tells 
  2600. you; allowing you to OK or cancel the deletion.
  2601.  
  2602. IGESIN Command
  2603. ==============
  2604. An IGES interchange file can be converted into an AutoCAD drawing by 
  2605. means of the IGESIN command:
  2606.  
  2607.    Command: igesin 
  2608.  
  2609. When AutoCAD prompts you, respond with the name of the IGES file to 
  2610. be loaded.
  2611.  
  2612. To load a complete IGES file, you must use IGESIN in an empty 
  2613. drawing, before any entities have been drawn and before any 
  2614. additional Block definitions, layers, linetypes, text styles, named 
  2615. views, named coordinate systems, or named viewport configurations 
  2616. have been created.
  2617.  
  2618. NOTE: If the drawing you are using as a prototype is not empty, you 
  2619. might find it helpful to open a new drawing using the No 
  2620. Prototype... button of the Create New Drawing dialogue box, as 
  2621. described in chapter 4 of the AutoCAD Reference Manual. You should 
  2622. also be aware that some third-party applications include an acad.lsp 
  2623. or .mnl file that modifies your drawing upon startup.
  2624.  
  2625. If a serious error is encountered, the input process stops and an 
  2626. error message is displayed reporting where the error was found. The 
  2627. partial drawing is not discarded.
  2628.